Выбор папки из всплывающего окна VBA, запущенного с Python - PullRequest
0 голосов
/ 17 марта 2020

Я использую 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?

1 Ответ

0 голосов
/ 17 марта 2020

Эта строка кода поможет вам сохранить точный каталог, который вы хотите сделать независимым от пути 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
...