pywin/win32com 保存启用宏的电子表格时出现文件访问错误
pywin/win32com file access error when saving a macro-enabled spreadsheet
我有以下代码读取现有 Excel 文件,添加宏,然后尝试将其保存到另一个启用宏的 excel 文件。
import win32com.client as win32
import comtypes, comtypes.client
name="//path//to//test1.xlsx"
sheetName = "Sheet1"
xlOpenXMLWorkbookMacroEnabled = 52
xl=win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible=True
ss = xl.Workbooks.Open(name, False, True)
ss.Worksheets(sheetName).Activate()
xlmodule = ss.VBProject.VBComponents.Add(1)
VBAcode='''sub VBAMacro()
Range("A1").Value = 1
end sub'''
xlmodule.CodeModule.AddFromString(VBAcode)
#xl.Run(name+'!VBAMacro')
ss.SaveAs(Filename=name[:-5] + '-macro.xlsm', FileFormat=xlOpenXMLWorkbookMacroEnabled)
xl.Quit()
在做这件事的时候,我一直在考虑xlOpenXMLWorkbook
here and here的问题。但是,当我尝试 运行 时,出现错误:
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Microsoft Excel cannot access the file ...
我已经在没有 SaveAs 行的情况下测试了这段代码,它读取文件正常,所以我不明白为什么它不起作用。有什么想法吗?
我意识到问题的根源是文件路径的处理方式。经过多次试验和错误后,似乎正确的路径编写方法(至少在 Windows OS 中)是使用双反斜杠:"C:\Users\blablah\"
.
我有以下代码读取现有 Excel 文件,添加宏,然后尝试将其保存到另一个启用宏的 excel 文件。
import win32com.client as win32
import comtypes, comtypes.client
name="//path//to//test1.xlsx"
sheetName = "Sheet1"
xlOpenXMLWorkbookMacroEnabled = 52
xl=win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible=True
ss = xl.Workbooks.Open(name, False, True)
ss.Worksheets(sheetName).Activate()
xlmodule = ss.VBProject.VBComponents.Add(1)
VBAcode='''sub VBAMacro()
Range("A1").Value = 1
end sub'''
xlmodule.CodeModule.AddFromString(VBAcode)
#xl.Run(name+'!VBAMacro')
ss.SaveAs(Filename=name[:-5] + '-macro.xlsm', FileFormat=xlOpenXMLWorkbookMacroEnabled)
xl.Quit()
在做这件事的时候,我一直在考虑xlOpenXMLWorkbook
here and here的问题。但是,当我尝试 运行 时,出现错误:
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Microsoft Excel cannot access the file ...
我已经在没有 SaveAs 行的情况下测试了这段代码,它读取文件正常,所以我不明白为什么它不起作用。有什么想法吗?
我意识到问题的根源是文件路径的处理方式。经过多次试验和错误后,似乎正确的路径编写方法(至少在 Windows OS 中)是使用双反斜杠:"C:\Users\blablah\"
.