我正在使用Python和win32com.client库来运行VBA宏。宏需要一个目录(它是.xlsm路径本身的子字符串)。如何将此目录/字符串传递给VBA弹出窗口?
import os, os.path
import win32com.client
if os.path.exists('C:/test_folder/excel_file.xlsm'):
xl=win32com.client.Dispatch("Excel.Application")
xl.Workbooks.Open('C:/test_folder/excel_file.xlsm', ReadOnly=1)
xl.Application.Run('excel_file.xlsm!Sheet1.Macro1')
运行此代码后,将弹出文件夹资源管理器窗口,要求提供目录。如何将目录传递给Excel?
此代码行将帮助您保存确切的目录,使其不依赖于python路径,并将其与变量关联,之后,您只需将该字符串变量传递到vba弹出窗口即可。您可以尝试将其全局化,也可以在代码继续时重用它,之后您可以引用,以便将其放在excel中。我希望这会有所帮助。
Sub Selectingadirectory()
Dim fd As FileDialog
Dim ActionClicked As Boolean
Dim SelectedFolderPath As String
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.title = "Chose your directory path"
fd.InitialFileName = Environ("UserProfile") & "\Desktop"
fd.AllowMultiSelect = False
ActionClicked = fd.Show
If ActionClicked Then
SelectedFolderPath = fd.SelectedItems(1)
Else
Msgbox "You didnt chose a folder"
Exit Sub
End If
End sub