エクセル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から起動したいのですが、方法は無いでしょうか??
お礼
ありがとうございますっ!!! > ・ファイル名が特定のパターンか? これだけまだできていませんが、とりあえず形になりました。 Sub Main Dim WSH As Object Dim fso, d, f, f1, n, p, fc, s, o Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder("C:作業フォルダ") Set fc = f.FIles For Each f1 In fc n = f1.DateLastModified If p < n Then s = f1.name p = f1.DateLastModified End If Next Set WSH = CreateObject("WScript.Shell") WSH.Run """C:作業フォルダ\" + s + """ 3 Set WSH = Nothing End Sub 作業フォルダのパスまわりでやたらとエラーがでて、この形にしたらおさまりました。 おそらくパスに空白があるので """ としなければならないのですが、""" 事前に変数に格納して使おうとするとエラーになっていたような感じでした。 できればここに拡張子チェックもいれてみたいと思います。
補足
f1.typeで条件判定してみたらうまくいきました! アドバイスありがとうございます!