用xlwings执行几个宏报错1004

Error 1004 executing several macros with xlwings

我正在尝试 运行 一个包含几个 sheet 和宏(全部写在模块中)的 xls 文件 python 使用 xlwings 但我似乎遇到了麻烦当连续执行多个宏时。我已经尝试了几种方法来解决这个问题,但我还不能找到解决方案:

这是我的 xlwings 脚本和 vba 宏(全部在模块中定义)的简单示例:

典型的 VBA 宏,我正在尝试 运行 使用 xlwings,这些宏用于在 sheet 中找到数据时清理某些范围的 sheet :

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

我正在 运行ning 的 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()
  1. 当我在 Excel 中执行所有 vba 宏时,一切正常。

  2. 当我运行我的函数只执行一个宏时,它仍然没问题。

  3. 当我 运行 使我的函数连续执行几个宏时(如下面的脚本示例中所写),我系统地收到 VBA 错误 1004 . 在我的第二个宏中,我应该抑制在 sheet 中找到的数据的行:Worksheets("Sheet1").Range(Cells(2,7), Cells(6,last_col)).ClearContents

如果有人可以分享他对这个问题的了解或帮助我找出代码中的错误,我将不胜感激!如果需要,请随时向我询问更多详情。

非常感谢 :)

注意

我认为这个问题可能很常见 VBA,因为您没有完全限定所有范围引用。试试这个

If last_col > 6 Then
    With Worksheets("Sheet1")
        .Range(.Cells(2, 7), .Cells(6, last_col)).ClearContents
    End With
End If