• ベストアンサー

ショートカット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ファイルを開く事はできません。 そこで、ショートカットファイルをカレントフォルダへ置いて開く事を考えていますが、どの様にオープンしていいのか分かりません。 アドバイスをよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • korin_
  • ベストアンサー率69% (46/66)
回答No.2

こんにちは。 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へのフルパス

tt246
質問者

お礼

ご丁寧にありがとうございます。 この方法をベースに進めたいと思います。 感謝致します。

その他の回答 (3)

  • korin_
  • ベストアンサー率69% (46/66)
回答No.4

こんにちは。 #3の方に対する返答になってしまいますが、お許しください。 #2では、ショートカットへのオブジェクト参照を作成して、その参照からExcelファイルのフルパスを取得しているだけで、ショートカット自体を作成しているわけではありません。 ショートカットを作成するには確かにSaveが必要ですが、先に作成しておいたショートカットからフルパスを取得するだけであれば、Saveは不要のはずです。 この質問者の方の場合、カレントフォルダに手作業で作成したショートカットファイルを置くことを前提にしているのだと思います。 (Excelファイルへのフルパスがユーザーによって変えられてしまう、というお話がありますから) ですので、ショートカットを作成するためのSaveメソッドは不要と思います。 何か私が勘違いしていたらごめんなさい。 蛇足失礼しました。

tt246
質問者

お礼

補足ありがとうございます。 おっしゃる通り、手作業でショートカットファイルを作成して、 それをカレントフォルダへ移動して使用する予定です。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

Ano2氏の回答ようにして 新たにlnkファイルを作成して TargetPathプロパティを設定し 作業(カレント)フォルダーを指定する場合はWorkingDirectoryにパスを設定します Saveメソッドでプロパティをlnkファイルに設定しましょう Saveをし忘れるとせっかく設定したデータが失われることになります

tt246
質問者

お礼

ありがとうございます。 まだVBAでlnkファイルを作成する所までは考えていませんが、 次のステップ(No2が実現した後)で色々試してみたいとは思います。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

フルパスが分かっているなら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 といった具合に パスも渡すようにしてやるとか

tt246
質問者

お礼

ご回答ありがとうございます。 職場の共有フォルダを参照するのですが、 このフルパスが時々変わられてしまいます。 システムを知らない人が共有を管理している為です。 変更された時に、VBAのソースを直すのが難点で、 出来れば、ショートカットファイルのリンク先アドレスを 読み取る方法でも良いのですが。 ご提案の方法は一つの選択肢として参考にしたいと思います。 深夜にも関わらずありがとうございます。

関連するQ&A