错误1004使用xlwings执行多个宏

时间:2018-03-15 21:05:07

标签: python vba excel-vba xlwings excel

我试图使用xlwings运行包含多个工作表和宏(都是用模块编写的)的xls文件,但似乎我在连续执行多个宏时遇到了trubble。我已经尝试过几个方法来解决这个问题,但我还不能解决这个问题:

以下是我的xlwings脚本和vba宏的简单示例(均在模块中定义):

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

value = value* Character.getNumericValue(digits1[i]);

我正在运行的xlwings脚本示例:

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

  2. 当我运行我的功能只执行其中一个宏时,它仍然可以。

  3. 当我运行我的函数连续执行几个宏(如下面的脚本示例中所写)时,我系统地得到一个VBA错误1004.在我的第二个宏内的行中我应该压制工作表中的数据: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()

  4. 如果有人可以分享他对此问题的了解或帮助我找到代码中的错误,我将非常感激!如果需要的话,不要犹豫要求我提供更多细节。

    非常感谢:)

    NB

1 个答案:

答案 0 :(得分:0)

我认为问题可能是一个常见的VBA问题,因为您没有完全限定所有范围参考。试试这个

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