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之前立即取消。 –