エクセル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
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/
この回答への補足
すみません、言葉が足りなかったようでした。
実現したかったことは、任意のエクセルファイルを開く前に、毎回EXCEL.EXEを起動させて、そこで任意のファイルを開くということでした。
参考にさせてもらったところ、上記スクリプトだと以下の挙動をとらないようでした。
EXCEL.EXE起動 → AAA.xls(任意)オープン
ご回答ありがとうございました。自己解決しましたのでご報告いたします。
'デスクトップにショートカットを作成する。
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を指定しなければならなかったようです。
お手数をおかけしました。
No.1
- 回答日時:
この回答への補足
すばやいご回答ありがとうございます。
リンク先を確認させていただきました。
言葉が足りずもうしわけありませんが、
実行したかったことは、毎回EXCEL.EXEを起動した後に、任意のファイル(AAA.xls)を起動するものでした。
リンク先の方法ですと、2回目に起動した場合1回目に起動したExcelの中で2つのbookが開くということになってしまい、実行したかったことと異なる結果になってしまいました。
もし私の実行したかった方法をご存知であれば教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ExcelVBAにてアプリをタスクマ...
-
stable diffusionのインストー...
-
UWSCについて
-
VB.NETでDOSコマンドの複数実行
-
Shiftキーを押しながら起動
-
Visual basic6.0からショートカ...
-
ショートカットの作成とコピー
-
createprocessで起動させる別.e...
-
PATHに登録がないのに、Excelが...
-
EXCELをバッチコマンドで...
-
バッチファイル アプリケーシ...
-
指定したアプリケーションをモ...
-
exe間での引き値の受け取り方法
-
ショートカットのリンク先が参...
-
バッチファイル エクセル起動
-
cygwin上でのTeraPadの起動
-
相対パスのショートカットフォ...
-
プログラムを実行すると、なぜ...
-
キー自動入力のサンプルコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
stable diffusionのインストー...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
ショートカットの作成とコピー
-
VB.NETでDOSコマンドの複数実行
-
gccがコマンドプロンプト上で使...
-
バッチファイル実行時に起動す...
-
VBAからキャッシュを削除する方...
-
c#でコマンドプロンプトを実行...
-
batファイルで立ち上げたaplを...
-
64bitのwindowsサーバーで32bit...
-
Shiftキーを押しながら起動
-
Visual basic6.0からショートカ...
-
VB.NETでコマンドプロンプトの操作
-
exe間での引き値の受け取り方法
-
プログラムを実行すると、なぜ...
-
相対パスのショートカットフォ...
-
PL/SQLで作成したストア...
-
バッチへ値を返す
おすすめ情報