プロが教えるわが家の防犯対策術!

エクセル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

A 回答 (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/

この回答への補足

すみません、言葉が足りなかったようでした。
実現したかったことは、任意のエクセルファイルを開く前に、毎回EXCEL.EXEを起動させて、そこで任意のファイルを開くということでした。

参考にさせてもらったところ、上記スクリプトだと以下の挙動をとらないようでした。

EXCEL.EXE起動 → AAA.xls(任意)オープン

補足日時:2007/05/02 13:18
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。自己解決しましたのでご報告いたします。

'デスクトップにショートカットを作成する。
  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を指定しなければならなかったようです。
お手数をおかけしました。

お礼日時:2007/05/02 14:05

お世話になります。



ここが参考になるのでは。
http://www.nurs.or.jp/~ppoy/access/access/acEt02 …

この回答への補足

すばやいご回答ありがとうございます。
リンク先を確認させていただきました。
言葉が足りずもうしわけありませんが、
実行したかったことは、毎回EXCEL.EXEを起動した後に、任意のファイル(AAA.xls)を起動するものでした。

リンク先の方法ですと、2回目に起動した場合1回目に起動したExcelの中で2つのbookが開くということになってしまい、実行したかったことと異なる結果になってしまいました。
もし私の実行したかった方法をご存知であれば教えてください。

補足日時:2007/05/02 13:14
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/02 14:06

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