0
我想創建一個啓用宏的Excel文件,其中,當按下按鈕時,Excel將被保存到data.csv
到同一文件夾中,並調用.exe
文件(這是再次在相同的文件夾中),它將訪問data.csv
的輸入。從Excel執行.exe文件
但是我準備這個,它創造了.csv
文件,當.exe
運行時,它是無法訪問文件.csv
(參照而宏已啓動獲取的截屏)。該屏幕截圖中顯示的目錄是最初創建.exe
的目錄 - 這與當前工作目錄無關。代碼如下所示。我試着單獨運行.exe
文件,它運行無縫,正確地讀取.csv
文件,所以exe/csv文件沒有問題。只是在從宏運行時,.exe
未在正確的文件夾中搜索.csv
。
Public Sub Save_CSV()
Dim MyPATH As String
Dim FileNAME As String
Dim FilePath As String
Dim OldPath As String
Dim RetVal As Variant
Dim stat As Integer
'*
FilePath = ActiveWorkbook.path & "\dynjackup.exe"
OldPath = CurDir
MyPATH = ActiveWorkbook.path
FileNAME = ActiveWorkbook.Name
FileNAME = Left(FileNAME, Len(FileNAME) - 4) ' REMOVE XLS EXTENSION
'FileNAME = FileNAME & "csv" ' ADD CSV EXTENSION
FileNAME = "data.csv" ' any name can be set here
Application.DisplayAlerts = False ' REMOVE DISPLAY MESSAGE: PREVIOUS FILE WILL BE ERASED
ActiveWorkbook.SaveAs FileNAME:= _
MyPATH & "\" & FileNAME, FileFormat:=xlCSV, _
CreateBackup:=False
'
OldPath = CurDir
'
' Call ChangeCurrentDir(ActiveWorkbook.path, stat)
RetVal = Shell(FilePath, vbNormalFocus)
'Call ChangeCurrentDir(OldPath, stat)
'ActiveWindow.Close
'Application.DisplayAlerts = True ' Restore DISPLAY MESSAGE
End Sub
錯誤:
不要鏈接到代碼,粘貼**這裏**。 –
嘗試在調用Shell之前添加'ActiveWorkbook.Close(False)'。最有可能的Excel有它打開專門 –
@ Nick.McDermaid我認爲這不會工作,因爲宏從ActiveWorkbook運行,並將關閉後,他可以運行shell之前立即取消。 –