やりたかったこと
・outlookのvba機能を使用し、メール受信時に「テスト.xlsm」を開きたいです。
お忙しいところ恐縮ですが、お力添えのほどお願い致します。
(追記補足)
なぜ、outlookのvbaから、Excelを直接起動させず、わざわざコマンドプロントによるExcel起動なのかというと、
コマンドプロントを介入しなければ、エクセルのworkbook_Openメソッドが起動しなかったためです。
エラー内容
・下図のとおり指定ファイル見つかりませんとなります。
エラーに対してやってみたこと
1. まずパスの記述ミスの可能性を潰しました。(Dir()による確認済。)
その結果、Dir()による指定ファイルの存在確認はきちんとできていたにも
関わらず、コマンドプロントによる起動が不可であることが分かりました。
2. また、コマンドプロントへの手入力においても、ファイルを開くことが可能でした。
【結論】
以上2点のことから、指定ファイルが実在していることは確認できました。
コマンドプロントへのコードが誤っているものと推察しておりますがそれ以上はわかりません。
コード
参考にさせていただいたサイト(ほぼ模写させていただきました。)
https://vbabeginner.net/start-command-prompt-and-execute-command/
Sub CommandPronptExec() Dim sh As New IWshRuntimeLibrary.WshShell '// WshShellクラスオブジェクト Dim ex As WshExec Dim sArCmd(2) Dim sCmd Dim i Dim file As String 'パス用 Dim folder1 As String 'パス用 Dim folder2 As String 'パス用 Dim folder3 As String 'パス用 Dim fileName As String 'パス用 Dim file_fullPath As String 'パス用 Dim folder2_R As String'コマンド用 Dim folder3_R As String'コマンド用 '//変数 folder1 = "C:\Users\10007410067\" folder2 = "OneDrive - sawatari\" folder2_R = Left(folder2, Len(folder2) - 1) folder3 = "●main\" folder3_R = Left(folder3, Len(folder3) - 1) fileName = "テスト.xlsm" file_fullPath = folder1 & folder2 & folder3 & fileName '// 実行する順にコマンドを配列に格納 file = Dir(file_fullPath) sArCmd(0) = "cd " & folder2_R sArCmd(1) = "cd " & folder3_R sArCmd(2) = "start " & file '// コマンドを[ & ]で連結 For i = 0 To UBound(sArCmd) If (i > 0) Then sCmd = sCmd & " & " End If sCmd = sCmd & sArCmd(i) Next '// コマンド実行 Set ex = sh.Exec("cmd.exe /c " & sCmd) '// コマンド失敗時 If (ex.Status = WshFailed) Then '// 処理を抜ける Exit Sub End If '// コマンド実行中は待ち Do While (ex.Status = WshRunning) DoEvents Loop End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。