エクセル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ランキング
-
batファイルで立ち上げたaplを...
-
指定したURLを表示させるバ...
-
stable diffusionのインストー...
-
相対パスのショートカットフォ...
-
バッチファイル 特定ウインドウ...
-
バッチファイルにて複数のプロ...
-
バッチファイルで以下のような...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
バッチ終了時にDOS窓を閉じるコ...
-
パソコンのフォルダー内のファ...
-
コマンドプロンプトのエラーに...
-
binフォルダーとは?
-
binファイルを解凍したいの...
-
多数のサブディレクトリ内のフ...
-
VBA 特定文字含むファイル
-
<python>py.exeで実行すると日...
-
バッチでテキストファイルから...
-
ファイル名を変更して移動させ...
-
exeファイルをデータ転送サービ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
stable diffusionのインストー...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
ショートカットの作成とコピー
-
VB.NETでDOSコマンドの複数実行
-
バッチファイル実行時に起動す...
-
exe間での引き値の受け取り方法
-
64bitのwindowsサーバーで32bit...
-
プログラムを実行すると、なぜ...
-
batファイルで立ち上げたaplを...
-
c#でコマンドプロンプトを実行...
-
UWSCについて
-
Shiftキーを押しながら起動
-
gccがコマンドプロンプト上で使...
-
C#でMediaPlayerを立ち上げた後
-
VB.NETでコマンドプロンプトの操作
-
指定したアプリケーションをモ...
-
バッチファイルでAPを終了さ...
-
VBAからキャッシュを削除する方...
おすすめ情報