• ベストアンサー

ショートカットのリンク先が参照できない

エクセル2003でVBAをくんでいます。 以下のようにして、毎回エクセルが起動するようなショートカット機能を作成しました。 実際にショートカットを起動すると、リンク先の参照している場所を問われ、 ショートカットのプロパティに現状とまったく同じリンクをコピーすると正しく動くようになります。 原因がわかりません。どなたかご存知の方がいらっしゃいましたら教えてください。 'デスクトップにショートカットを作成します。 'return ' ショートカットを作成した場合:TRUE ' ショートカットを作成しない場合:FALSE Private Function Create_Shortcut() As Boolean Create_Shortcut = False On Error GoTo sub_err Dim WSHShell As Object Dim objSc As Object Dim strShortCutPath As String Set WSHShell = CreateObject("WScript.Shell") 'BASE_FILE_LINK_NAME : リンク名です。 strShortCutPath = WSHShell.SpecialFolders("Desktop") & "\" & BASE_FILE_LINK_NAME If Dir(strShortCutPath) <> "" Then Exit Function End If 'デスクトップにショートカットを作成する。 Set objSc = WSHShell.CreateShortcut(strShortCutPath) With objSc .TargetPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" & Chr$(&H22) & " " & Chr$(&H22) & driveletter4 .WorkingDirectory = driveletter3 .Save End With Create_Shortcut = True Exit Function sub_err: MsgBox "デスクトップにショートカットを作成できませんでした。" Exit Function End Function

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

こんな感じで出来ましたけど・・ DriveLetter は謎なので割愛。 Function myMyCreate_Shortcut() As Boolean   Dim WSHShell As Object   Dim oShellLink As Object   Dim strDesktop As String   Dim strXLPath As String   strXLPath = Application.Path & "\excel.exe"   strDesktop = WSHShell.SpecialFolders("Desktop")   Set WSHShell = CreateObject("WScript.Shell")   Set oShellLink = WSHShell.CreateShortcut(strDesktop & "\BASE_FILE_LINK_NAME.lnk")   oShellLink.TargetPath = strXLPath   oShellLink.WindowStyle = 1   oShellLink.Hotkey = "CTRL+SHIFT+F"   oShellLink.IconLocation = strXLPath & ", 3"   oShellLink.Description = "BASE_FILE_LINK_NAME"   oShellLink.WorkingDirectory = strDesktop   oShellLink.Save End Function ほとんどヘルプの丸写しです。 Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB) http://www.microsoft.com/japan/msdn/scripting/

PINK_EGG
質問者

お礼

ご回答ありがとうございました。自己解決しましたのでご報告いたします。 'デスクトップにショートカットを作成する。   Dim driveletter3 as String   Dim driveletter4 as String driveletter4 = "C:\Documents and Settings\Administrator\My Documents\" driveletter4 = "C:\Documents and Settings\Administrator\My Documents\hogehoge.xls" Set objSc = WSHShell.CreateShortcut(strShortCutPath) With objSc .TargetPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" .Arguments = Chr$(&H22) & driveletter4 & Chr$(&H22) Settings\Administrator\My Documents\OpeningScoreCard\OpeningScoreCard.xls""" .WorkingDirectory = driveletter3 .Save End With ポイントはTargetPathとArgumentsを指定しなければならなかったようです。 お手数をおかけしました。

PINK_EGG
質問者

補足

すみません、言葉が足りなかったようでした。 実現したかったことは、任意のエクセルファイルを開く前に、毎回EXCEL.EXEを起動させて、そこで任意のファイルを開くということでした。 参考にさせてもらったところ、上記スクリプトだと以下の挙動をとらないようでした。 EXCEL.EXE起動 → AAA.xls(任意)オープン

その他の回答 (1)

回答No.1

お世話になります。 ここが参考になるのでは。 http://www.nurs.or.jp/~ppoy/access/access/acEt029.html

PINK_EGG
質問者

お礼

ご回答ありがとうございました。上記に記したように自己解決しましたのでご報告します。 お手数をおかけしました。

PINK_EGG
質問者

補足

すばやいご回答ありがとうございます。 リンク先を確認させていただきました。 言葉が足りずもうしわけありませんが、 実行したかったことは、毎回EXCEL.EXEを起動した後に、任意のファイル(AAA.xls)を起動するものでした。 リンク先の方法ですと、2回目に起動した場合1回目に起動したExcelの中で2つのbookが開くということになってしまい、実行したかったことと異なる結果になってしまいました。 もし私の実行したかった方法をご存知であれば教えてください。

関連するQ&A