我正在尝试使用 xlwings 使用 python 运行包含多个工作表和宏(全部编写在模块中)的 xls 文件,但似乎在连续执行多个宏时遇到了麻烦。我已经尝试了几件事来克服这个问题,但我还不能解决这个问题:
这是我的 xlwings 脚本和 vba 宏的一个简单示例(均在模块中定义):
我正在尝试使用 xlwings 运行的典型 VBA 宏,这些宏用于在找到数据时清理工作表的某些范围:
Sub Clear_data()
Application.ScreenUptating = False
Application.Calculation = xlCalculationAutomatic
last_col = Worksheets("Sheet1").Range("ZZ2").End(xlToLeft).Column
If last_col > 6 Then
Worksheets("Sheet1").Range(Cells(2,7), Cells(6,last_col)).ClearContents
End If
Application.ScreenUptating = False
Application.Calculation = xlCalculationAutomatic
End Sub
我正在运行的 xlwings 脚本示例:
def clear_sheet1(filename = "", file_location = "") :
# Connection with the xls workbook
fullpathname = os.path.join(file_location,filename)
Workbook = xw.Book(fullpathname)
# Executing the vba macros with xlwings
#1
macro1 = Workbook.macro("NAME_OF_MY_MACRO_1")
macro1()
#2
macro2 = Workbook.macro("NAME_OF_MY_MACRO_2")
macro2()
#3
macro3 = Workbook.macro("NAME_OF_MY_MACRO_3")
macro3()
# Saving and closing the Workbook
Workbook.save()
Workbook.close()
return()
当我在 Excel 中执行所有 vba 宏时,一切正常。
当我运行我的函数只执行一个宏时,它仍然可以。
当我运行我的函数来连续执行几个宏时(如下面的脚本示例中所写),我系统地收到了 VBA 错误 1004。在我应该抑制在其中找到的数据的行中的第二个宏中一张 : Worksheets("Sheet1").Range(Cells(2,7), Cells(6,last_col)).ClearContents
如果有人可以分享他对这个问题的了解或帮助我找到我的代码中的问题,我们将不胜感激!如果需要,请随时向我询问更多详细信息。
非常感谢 :)
NB
我认为问题可能是一个常见的 VBA 问题,因为您没有完全限定所有范围引用。试试这个
If last_col > 6 Then
With Worksheets("Sheet1")
.Range(.Cells(2, 7), .Cells(6, last_col)).ClearContents
End With
End If
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句