- ベストアンサー
ショートカットExellファイルのオープン
お世話になっています。 カレントフォルダにあるExcelファイルを開くには次の関数を作成して実現しています。 Function ExWorkbooksOpen(myOpenXlsName As Variant) Dim myWb As Workbook Dim totoFullName As Variant Set myWb = ActiveWorkbook totoFullName = myWb.Path & "\" & myOpenXlsName Workbooks.Open Filename:=totoFullName Set myWb = Nothing End Function この方法ですと、別のフォルダにあるExellファイルを開く事はできません。 そこで、ショートカットファイルをカレントフォルダへ置いて開く事を考えていますが、どの様にオープンしていいのか分かりません。 アドバイスをよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Excelのショートカットファイルのフルパスは以下の方法で取得出来ます。 ご参考にどうぞ。 Dim WshShell As Object Dim oShellLink As Object Set WshShell = CreateObject("WScript.Shell") Set oShellLink = WshShell.CreateShortcut("D:\hoge.xls へのショートカット.lnk") MsgBox oShellLink.TargetPath ' ←Excelへのフルパス
その他の回答 (3)
- korin_
- ベストアンサー率69% (46/66)
こんにちは。 #3の方に対する返答になってしまいますが、お許しください。 #2では、ショートカットへのオブジェクト参照を作成して、その参照からExcelファイルのフルパスを取得しているだけで、ショートカット自体を作成しているわけではありません。 ショートカットを作成するには確かにSaveが必要ですが、先に作成しておいたショートカットからフルパスを取得するだけであれば、Saveは不要のはずです。 この質問者の方の場合、カレントフォルダに手作業で作成したショートカットファイルを置くことを前提にしているのだと思います。 (Excelファイルへのフルパスがユーザーによって変えられてしまう、というお話がありますから) ですので、ショートカットを作成するためのSaveメソッドは不要と思います。 何か私が勘違いしていたらごめんなさい。 蛇足失礼しました。
お礼
補足ありがとうございます。 おっしゃる通り、手作業でショートカットファイルを作成して、 それをカレントフォルダへ移動して使用する予定です。
- redfox63
- ベストアンサー率71% (1325/1856)
Ano2氏の回答ようにして 新たにlnkファイルを作成して TargetPathプロパティを設定し 作業(カレント)フォルダーを指定する場合はWorkingDirectoryにパスを設定します Saveメソッドでプロパティをlnkファイルに設定しましょう Saveをし忘れるとせっかく設定したデータが失われることになります
お礼
ありがとうございます。 まだVBAでlnkファイルを作成する所までは考えていませんが、 次のステップ(No2が実現した後)で色々試してみたいとは思います。
- redfox63
- ベストアンサー率71% (1325/1856)
フルパスが分かっているならtotoFullNameへの代入を工夫するだけなのでは たとえば Function ExWorkbooksOpen(myOpenXlsName As Variant, Optional sPath as String = "") Dim myWb As Workbook Dim totoFullName As Variant Set myWb = ActiveWorkbook if sPath = "" then totoFullName = myWb.Path & "\" & myOpenXlsName else totoFullName = sPath & "\" & myOpenXlsName end if Workbooks.Open Filename:=totoFullName Set myWb = Nothing End Function といった具合に パスも渡すようにしてやるとか
お礼
ご回答ありがとうございます。 職場の共有フォルダを参照するのですが、 このフルパスが時々変わられてしまいます。 システムを知らない人が共有を管理している為です。 変更された時に、VBAのソースを直すのが難点で、 出来れば、ショートカットファイルのリンク先アドレスを 読み取る方法でも良いのですが。 ご提案の方法は一つの選択肢として参考にしたいと思います。 深夜にも関わらずありがとうございます。
お礼
ご丁寧にありがとうございます。 この方法をベースに進めたいと思います。 感謝致します。