dポイントプレゼントキャンペーン実施中!

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

A 回答 (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へのフルパス
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/26 22:17

こんにちは。



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

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

お礼日時:2008/11/26 22:24

Ano2氏の回答ようにして 新たにlnkファイルを作成して


TargetPathプロパティを設定し
作業(カレント)フォルダーを指定する場合はWorkingDirectoryにパスを設定します
Saveメソッドでプロパティをlnkファイルに設定しましょう

Saveをし忘れるとせっかく設定したデータが失われることになります
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/26 22:21

フルパスが分かっているなら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
といった具合に パスも渡すようにしてやるとか
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
職場の共有フォルダを参照するのですが、
このフルパスが時々変わられてしまいます。
システムを知らない人が共有を管理している為です。

変更された時に、VBAのソースを直すのが難点で、
出来れば、ショートカットファイルのリンク先アドレスを
読み取る方法でも良いのですが。

ご提案の方法は一つの選択肢として参考にしたいと思います。
深夜にも関わらずありがとうございます。

お礼日時:2008/11/26 06:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!