gpt4 book ai didi

python - 使用 python 在 PERSONAL.XLSB 中运行宏

转载 作者:行者123 更新时间:2023-12-04 22:27:53 29 4
gpt4 key购买 nike

我正在尝试使用 python 在 Personal.XLSB 中运行一个宏。

当我运行宏 PERSONAL.XLSB!PIVOTS我自己来自它工作的excel工作簿。另外,如果我将 vba 代码复制并粘贴到“此工作簿”中并运行 xlApp.Run('Pivots')有用。

但是,当我使用 xlApp.Run('C:\\Users\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\PERSONAL.XLSB!Pivots')它行不通。我需要它在“PERSONAL.XLSB”中运行,因为我将在多个文件中使用相同的宏。

from __future__ import print_function
import unittest
import os.path
import win32com.client

class ExcelMacro(unittest.TestCase):
def test_excel_macro(self):
try:
xlApp = win32com.client.DispatchEx('Excel.Application')
xlsPath = os.path.expanduser('C:\\Users\\colm_mcsweeney\\Documents\\Attachments\\Dash.09.05.19.xlsm')
wb = xlApp.Workbooks.Open(Filename=xlsPath)
xlApp.Visible = True
xlApp.Run("C:\\Users\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\PERSONAL.XLSB!Pivots")
wb.Save()
xlApp.Quit()
print("Macro ran successfully!")
except:
print("Error found while running the excel macro!")
xlApp.Quit()
if __name__ == "__main__":
unittest.main()

最佳答案

诀窍是首先打开您的 PERSONAL.XLSB 文件,然后您可以打开/激活任何其他 Excel wb 并运行宏

import win32com.client
from pathlib import Path

# Folder I want to save the file to
folder = Path(r"C:\Users\user_name\folder")

# Your excel file you want to run the macro on
filename = excel.xlxs

save_path = folder / filename

# Sets up Excel to run Macro
try:
xl = win32com.client.Dispatch('Excel.Application')
xl.visible = False
personal_wb = xl.workbooks.Open(
Filename=r"C:\Users\user_name\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB")
wb = xl.workbooks.Open(Filename=save_path)
xl.Run("'PERSONAL.XLSB'!MyMacro")
wb.Close(SaveChanges=1)
xl.Quit()
print("Macro ran successfully")
except:
print("Error found while running the excel macro")
xl.Quit()
我在网上查找了通往 XLSTART 的路径。有些人在本地下,我的是在漫游下。
在 excel 中,您可以从 PERSONAL.XLSB 运行此宏以获取您的文件路径
Sub Find_Personal_Macro_Workbook()

Dim path As String

path = Application.StartupPath

MsgBox path

End Sub

关于python - 使用 python 在 PERSONAL.XLSB 中运行宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56073498/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com