エクセルVBA:perlで作成したexeが失敗する
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から起動したいのですが、方法は無いでしょうか??
お礼
回答して頂き、とても感謝します。 どっちも同じVBAのShell関数なんですね。 一番引っかかっていた部分が解決できました。有難う御座います! 更に、CALLについても補足を書いて貰って大変助かります。 「何か呼び出してるぽいけど…なんだコレ?」と思っていたので。 okormazdさんの解説でどんな物なのか理解出来ました。感謝です!! …説明して貰った所を見て考えたのですが。 多分、(1)は ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) ※Winamp_Pathは、Winampが置いてあるパス名 ※Pathは、MP3等の音楽ファイルのパス+ファイル名 だから、 ★Winamp_Path & "winamp.exe = pathnameのプログラム名 ★/ADD " & """" & = コマンドラインのスイッチ? ★Path = 引数名? (&は文字同士繋ぐ記号とは理解しています) みたくなっていて、Winamp専用に動くようになっているんですね。 pathnameのプログラムによって、必要な引数もコマンドラインも違ってくると。 その辺りが、今だに納得出来ていないのですが、もう少し色々勉強して理解出来るレベルを上げてから、次の機会に質問したいと思います。 Shell "c:\program files\gretech\GomPlayer\Gom.exe " & Path と、言う書き方もあるのが分かって、同じなのか気になるのでその辺りも調査してから。 本当にありがとうございました!!ここで一旦締めたいと思います。 また機会がありましたら、ご協力お願いします。