VBAプログラムで詰まってしまったので質問します。
perlにて自作したexeファイルをexcelのボタンから開きたいのですが、
実行の途中で止まってしまうようなのです。
止まってしまうexeファイルは、自分でダブルクリックして起動すると正常動作する為、
原因がわかりません。
'Declare Function ShellExecute Lib "shell32.dll" _
'Alias "ShellExecuteA" ( _
'ByVal hwnd As Long, _
'ByVal lpOperation As String, _
'ByVal lpFile As String, _
'ByVal lpParameters As String, _
'ByVal lpDirectory As String, _
'ByVal nShowCmd As Long) As Long
'lRet = ShellExecute(0, "open", sPASS, vbNull, vbNull, SW_NORMAL)
'With CreateObject("Wscript.Shell")
' .Run "***********************", 5
'End With
'MsgBox "vbCrLf & CurDir & vbCrLf"
'Shell "**********************", 1
'With CreateObject("Wscript.Shell")
' .Run "..************", 5
'End With
'Dim ret As Long
'With CreateObject("Wscript.Shell")
' ret = .Run("*************", 7, True)
'End With
'If ret <> 0 Then MsgBox "失敗しました": Exit Sub
'Shell "*****************************"
'Dim WSH
'Set WSH = CreateObject("Wscript.Shell")
'WSH.Run "*************************", 3
'Set WSH = Nothing
'Dim file As Variant
'file = Application.GetOpenFilename
'file = "****************** " + file
'Shell (file)
'On Error GoTo errline
'ret = ShellExecute(0, "open", "***************", "", Path, 1)
'errline:
'Err = 0
'Dim ファイルのあるフォルダ As String
'Dim ファイルの名前 As String
'Dim プログラムのパス As String
'Dim 拡張子 As String
'ファイルのあるフォルダ = Worksheets("Sheet1").Cells(1, 1)
'ファイルの名前 = Worksheets("Sheet1").Cells(2, 1)
'プログラムのパス = Worksheets("Sheet1").Cells(3, 1)
'拡張子 = Worksheets("Sheet1").Cells(4, 1)
'Dim ファイルのパス As String
'ファイルのパス = ファイルのあるフォルダ & "\" & ファイルの名前 & "." & 拡張子
'Dim AppFp As String
'AppFp = プログラムのパス & " """ & ファイルのパス & """"
'前の""はスペース空ける
'「"」が特殊文字であるため、スキップするための文字(エスケープ文字)「"」を前につける
'Dim a As Integer
'a = Shell(AppFp, vbNormalFocus)
'上記プログラム全部×
Const vbHide = 0 'ウィンドウを非表示
Const vbNormalFocus = 1 '通常のウィンドウ、かつ最前面のウィンドウ
Const vbMinimizedFocus = 2 '最小化、かつ最前面のウィンドウ
Const vbMaximizedFocus = 3 '最大化、かつ最前面のウィンドウ
Const vbNormalNoFocus = 4 '通常のウィンドウ、ただし、最前面にはならない
Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない
'Dim objWShell
'Set objWShell = CreateObject("WScript.Shell")
'できたが×途中で終了している模様
'フォルダ「C:\happy」を開きます
'objWShell.Run "rundll32.exe url.dll" & _
' ",**************", vbNormalFocus, False
'WScript.Echo "**********を実行しました!"
'Set objWShell = Nothing
どうにかVBAから起動したいのですが、方法は無いでしょうか??
No.1
- 回答日時:
「どの行で」「どんなエラーが表示される」を補足してください。
> 自分でダブルクリックして起動すると正常動作する
ShellExecuteの3番目の引数[sPASS]の値はいつ定まるの?
止まってしまうexeファイルは、環境変数PATHが通してあるフォルダにありますか?無いでしょ?
この回答への補足
返信ありがとうございます。
VBAのプログラムの方は全くエラーは出ません。
exeの方もエラーが出ません。
ダウンロードしたいデータが、ダウンロードできていないことが問題なのです。
一応exeは走っている(黒いdos画面ウィンドウが表示される)ようなのですが、エラーも出ず、終了します。
VBAにてexeを起動するとダウンロードできません。
自分でwindowsのexeをダブルクリックして起動すると正常動作します。
今からpathの方を調べてみます。
No.2ベストアンサー
- 回答日時:
perl は全くの門外漢ですけど
>自分でダブルクリックして起動すると正常動作する為、
なら、立ち上げるだけなら
shell("explorer.exe そのexeファイル?のフルパス") で出来そうな気がします。
この回答への補足
返信ありがとうございます。
exeが立ち上がることは立ち上がるのですが、正常動作しないことが問題なのです。
データをダウンロードするプログラムなのですが、excelVBA上のshellで動かすと、データがダウンロードできません。
ウィンドウズで普通にダブルクリックすると正常動作します。
No.3
- 回答日時:
「自分でダブルクリックして起動すると正常動作する」ということから考えられるのは、カレントディレクトリの問題ではないでしょうか。
そのperlで作られたexeプログラムは同じフォルダにある何かを利用してはいませんか?
プログラム実行前にカレントディレクトリをそのexeがあるフォルダに変更してみましょう。
ChDrive exeのあるドライブ
ChDir exeのあるパス
'exe実行
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
xismoについてです!開こうとす...
-
COMとユーザの対話型しりとりプ...
-
VB6.0で作ったプロジェクトが起...
-
VBスクリプトのWshShell.Runに...
-
LINK : fatal error LNK1104に...
-
VBAでUWSCが起動できない
-
なぜプロセスはファイルにアク...
-
「xdoc2txt」を利用した文書検...
-
実行ファイルと実行モジュール...
-
プログラム内でのワイルドカー...
-
HSP ファイル名の変更の仕方
-
VC++から引数付きexeファイルの...
-
VB6で、C言語の(argv,argc)み...
-
コンポーネント`MSCOMM32.cox'...
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
JavaScriptでコマンドプ...
-
Tomcat停止後の処理継続について
-
コマンドプロンプトで外のexeや...
-
VBAでEXEファイルを動かす方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
xismoについてです!開こうとす...
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
LINK : fatal error LNK1104に...
-
VBAでEXEファイルを動かす方法...
-
c/c++ ビルドしたにもかかわら...
-
WScript.Echo と msgbox
-
64bit環境で32bitのodbc参照
-
VBAでMP3を鳴らしたい
-
コマンドプロンプトで外のexeや...
-
batからexeを実行し戻り値を受...
-
ファイルアイコンの左下に緑の□...
-
コンパイル ./aと./a.out の違い
-
htaファイルが実行されません
-
jarファイルとjava.exeの関連付...
-
JAVA .jarファイルに再圧縮する...
-
VB6.0で作ったプロジェクトが起...
-
以下のように複数のファイルを...
おすすめ情報