gpt4 book ai didi

python - 使用 Python 将宏注入(inject)电子表格

转载 作者:太空狗 更新时间:2023-10-29 17:18:34 25 4
gpt4 key购买 nike

我有一个宏,我想使用一堆现有的电子表格。唯一的问题是电子表格太多了,手工做太费时间了!

我已经编写了一个 Python 脚本来使用 pyWin32 访问所需的文件,但我似乎无法找到一种方法来使用它来添加宏。

这里有一个类似的问题给出了这个答案(不是Python,但看起来还是用COM),但是我的COM对象好像没有叫VBProject的成员:

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls")
Set xlmodule = objworkbook.VBProject.VBComponents.Add(1)
strCode = _
"sub test()" & vbCr & _
" msgbox ""Inside the macro"" " & vbCr & _
"end sub"
xlmodule.CodeModule.AddFromString strCode
objWorkbook.SaveAs "c:\scripts\test.xls"
objExcel.Quit

编辑:链接到引用的类似问题:Inject and execute Excel VBA code into spreadsheet received from external source

我还忘了说,虽然这不是 Python,但我希望通过 COM 对象可以使用类似的对象成员。

最佳答案

这是转换后的代码。您可以使用 win32comcomtypes包。

import os
import sys

# Import System libraries
import glob
import random
import re

sys.coinit_flags = 0 # comtypes.COINIT_MULTITHREADED

# USE COMTYPES OR WIN32COM
#import comtypes
#from comtypes.client import CreateObject

# USE COMTYPES OR WIN32COM
import win32com
from win32com.client import Dispatch

scripts_dir = "C:\\scripts"
conv_scripts_dir = "C:\\converted_scripts"
strcode = \
'''
sub test()
msgbox "Inside the macro"
end sub
'''

#com_instance = CreateObject("Excel.Application", dynamic = True) # USING COMTYPES
com_instance = Dispatch("Excel.Application") # USING WIN32COM
com_instance.Visible = True
com_instance.DisplayAlerts = False

for script_file in glob.glob(os.path.join(scripts_dir, "*.xls")):
print "Processing: %s" % script_file
(file_path, file_name) = os.path.split(script_file)
objworkbook = com_instance.Workbooks.Open(script_file)
xlmodule = objworkbook.VBProject.VBComponents.Add(1)
xlmodule.CodeModule.AddFromString(strcode.strip())
objworkbook.SaveAs(os.path.join(conv_scripts_dir, file_name))

com_instance.Quit()

关于python - 使用 Python 将宏注入(inject)电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197259/

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