从从Python运行的VBA弹出窗口中选择一个文件夹

问题描述 投票:0回答:1

我正在使用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 excel vba win32com
1个回答
0
投票

此代码行将帮助您保存确切的目录,使其不依赖于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
© www.soinside.com 2019 - 2024. All rights reserved.