【问题标题】:Error 1004 executing several macros with xlwings使用 xlwings 执行多个宏时出现错误 1004
【发布时间】:2018-08-24 20:07:21
【问题描述】:

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

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

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

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

非常感谢:)

注意

【问题讨论】:

  • 大家好 :)

标签: python vba excel xlwings


【解决方案1】:

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

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

【讨论】:

  • 您好 :) 感谢您的回答,使用您的代码时它确实有效!但是我不确定是否正确理解发生了什么,因为我对 vba 不是很熟悉!如果您能向我解释出了什么问题,那就太好了:) 再次感谢!
  • 当然。如果未指定工作表,VBA 将假定活动工作表。如果在运行代码时 Sheet1 处于活动状态,那一切都很好,但如果另一个工作表处于活动状态,则该范围跨越两个工作表,这是不允许的。
  • 因为在单元格引用前面没有工作表引用,所以假定活动工作表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多