実行プログラムを選択するフォーム上で以下のようにプログラムを指定し:
FullExePath = App.Path & "\program1.exe"
中略:選択条件
FullExePath = App.Path & "\program2.exe"
中略:選択条件
FullExePath = App.Path & "\program3.exe"
プログラムを実行するフォーム上で以下のように実行すると、ときどき失敗することがあります:
RetVal = Shell(FullExePath)
If RetVal = 0 Then
MsgBox FullExePath & "の実行に失敗しました。"
End If
失敗した場合に備えて上記のようなメッセージボックスを指定しておくと、実行に失敗したときには正しいフルパスが表示されます。
なぜ、プログラムの実行に失敗することがあるのでしょうか?
失敗するのは最初に選択して実行したときではなくて、2回目以降選択したときのようです。
Visual Basic Version 6を使用しています。
Windows XP、Windows 98いずれでも同じ状況です。
No.1ベストアンサー
- 回答日時:
こんにちは。
maruru01です。1.
多分違うと思いますが、App.Pathがドライブ名(C:\)の場合は、"\"が2つ重なってしまうのでダメです。
2.
多分こっちだと思いますが、パスに半角スペースが入っていると、Shell関数がうまく動作しないことがあります。
FullExePath = """" & FullExePath & """"
としてから、
RetVal = Shell(FullExePath)
とすればいけると思います。
参考URLもどうぞ。
http://support.microsoft.com/default.aspx?scid=% …
この回答への補足
maruru01さん、ありがとうございました。
urlが参考になりました。おかげさまでエラーの原因がわかりました。
FullExePath = App.Path & "\program3.exe"
中略
RetVal = Shell(FullExePath)
If RetVal = 0 Then
MsgBox FullExePath & "の実行に失敗しました。"
Else
Set MyObject1 = CreateObject("Scripting.FileSystemObject")
Set MyObject2 = MyObject1.GetFile(SrcPath & "\" & SrcFile)
End If
質問には書かなかったのですが、上記Else以下で実行結果ファイルのコピー先を
指定していました。FullExePathが正常に実行されているときにShellから0以外が
返されるため、ファイルのコピー先が指定されないでエラーとなっていました。
exeファイルが正常に実行されてもShell()から0が返されないことがあるようですね?
k8sato
maruru01さん、ご回答をありがとうございます。
余分なスペースまたは\の混入を確認するために
If RetVal = 0 Then
MsgBox "##" & FullExePath & "##の実行に失敗しました"
End If
として、##との間のスペースの有無を表示してみましたが余分なスペースも\も挿入されていないようです。しかし、メッセージボックスに単にExecution Errorと表示されることもあるので、もう一度よく調べてから結果をご報告いたします。取り急ぎお礼申し上げます。
k8sato
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Windows 10 このWindowsUpdateの失敗メッセージは何を物語るか? 5 2023/07/17 11:49
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Windows 10 パソコンが立ち上がりません 6 2022/10/06 00:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- その他(プログラミング・Web制作) マウスを使用してpowershellのプログラムを起動して、引数リストを渡したい 1 2022/11/07 21:39
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excel vbaから実行するexe実行...
-
Visual Studio 「AnyCpu」について
-
Windows PowerShellでC言語を実...
-
system関数(Windows)の戻り値!!
-
Format 関数のバグ?
-
ActiveX → VB を起動するとCre...
-
「読み込み違反」が起きたとき...
-
VB.net(WEB)プログラムのPDFフ...
-
ActiveDirectoryから値を取得
-
WindowsXpでAppActivate
-
VBにてDLLをデバックする方法。
-
Windows64BitOSでVB5.0のPG起動
-
VB6.0 exe作成時に実行時エラー...
-
VisualStudioでC#が実行できない
-
vba 時間の引き算 例えば 15:00...
-
Designer.vbは直接コードをいじ...
-
VB2010で作成したdllからtlbが...
-
VBSで起動したアプリが前面表示...
-
印刷要求順番と印刷出力順番が...
-
VB.NETで参照設定したDLLの修正...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
「読み込み違反」が起きたとき...
-
Windows PowerShellでC言語を実...
-
excel vbaから実行するexe実行...
-
C++初心者です。 debug asserti...
-
実行ファイル(.exe)が別のPC...
-
ActiveDirectoryから値を取得
-
VB6.0 exe作成時に実行時エラー...
-
外部exe呼び出しの方法 ShellEx...
-
Format 関数のバグ?
-
ActiveX → VB を起動するとCre...
-
androidで.exeを実行できますか?
-
C#VB、exeに埋め込んだexeの実行
-
system関数(Windows)の戻り値!!
-
Eclipse CDT MinGWによるC言語
-
Pythonのコードをexe化
-
VBAでコマンドプロンプトを呼び...
-
VisualStudioでC#が実行できない
-
VB.NetのWinsockについて
-
mscorlib.dllの初回例外について
おすすめ情報