【发布时间】:2018-09-05 18:22:32
【问题描述】:
我在多个命令按钮上运行相同的代码行,这些按钮打开嵌入在父电子表格中的分配的 Excel 模板。
Private Sub M113_Click()
Dim WDObj As Object
Dim WDApp As Object
Dim str As String
str = ActiveWorkbook.Path & "\CND Scaled Template.xlsm"
Set WDObj = Sheets(2).OLEObjects("CNDS")
WDObj.Verb xlOpen
Dim i As Integer
i = Workbooks.Count
Workbooks(i).SaveCopyAs str
Workbooks(i).Close
Workbooks.Open (str)
Set WDObj = Nothing
Set WDApp = Nothing
End Sub
这是我收到错误消息“无法获取工作表类的 OLEObjects 属性”的行
Set WDObj = Sheets(2).OLEObjects("CNDS")
在打开 excel 后第一次运行它不会出现任何错误,但第二次运行它是有问题的。还通过调试模式进入 VBA 编辑器并按 F5 工作正常,整个代码执行良好。可能是什么问题?除了 excel 之外,Ole 对象也不会发生这种情况。
【问题讨论】:
-
您可能需要指定
Sheets(2)在哪个工作簿中。喜欢:ThisWorkbook.Sheets(2)你也可能打算使用ThisWorkbook.Path而不是ActiveWorkbook.Path。 •ThisWorkbook是编写代码的工作簿,但ActiveWorkbook是在代码运行时具有焦点(位于顶部)的工作簿。