【问题标题】:VBA Excel GetObject Issue - Run Time Error 91 - Object Variable or With block Variable not SetVBA Excel GetObject 问题 - 运行时错误 91 - 对象变量或未设置块变量
【发布时间】:2018-07-23 14:10:03
【问题描述】:

我收到一个错误:

“运行时错误 91:对象变量或未设置块变量”。

调试用MsgBox()突出显示行:

Sub CATMain()

    Dim xlApp As Excel.Application    
    Set xlApp = VBA.GetObject("", "Excel.Application")    
    Dim exlBook As Excel.Workbook
    Set exlBook = xlApp.ActiveWorkbook    
    MsgBox exlBook.Name

End Sub

可能出了什么问题?

【问题讨论】:

    标签: vba excel object catia


    【解决方案1】:

    VBA.GetObject() 中的代码中删除"",它应该可以工作:

    Sub TestMe()
    
        Dim xlApp As Excel.Application        
        Set xlApp = VBA.GetObject(, "Excel.Application")        
        Dim exlBook As Excel.Workbook
        Set exlBook = xlApp.ActiveWorkbook        
        MsgBox exlBook.Name
    
    End Sub
    

    MSDN GetObject。这些是GetObject()的参数:

    • 路径名 - 可选;变体(字符串)。包含要检索的对象的文件的完整路径和名称。如果省略路径名,则需要类。

    • 可选;变体(字符串)。表示对象类的字符串。

    【讨论】:

    • 如果我这样做,会发生另一个错误。 “运行时错误 429:ActiveX 组件无法创建对象”
    • @ccan - 奇怪。你把代码放在 Excel 中了吗,它对我来说很好用。还是在Catia
    • 是的,我让我的代码在 Excel 中工作,但我想让它在 Catia 中工作。
    • 当我让代码在 excel 中工作时,代码有点不同。代码配置是相反的。它不需要行 Set xlApp = VBA.GetObject(, "Excel.Application") ,而是在代码中的某处有 Set CATIA = VBA.GetObject("", "CATIA.Application")
    • @Vityaya 我会继续尝试。感谢您的帮助。
    【解决方案2】:

    添加:

     xlApp.Application.Visible = True
    

    设置后...

    你会明白为什么没有 activeworkbook.name

    因为""你打开了一个新实例

    【讨论】:

    • 如何让它读取活动文档?我认为“GetObject”应该这样做。
    【解决方案3】:

    在 CATIA vb 模块中:

    Sub CATMain()
    
        Dim xlApp As Object
    
        On Error Resume Next
        Set xlApp = VBA.GetObject(, "Excel.Application")
        On Error GoTo 0
    
        If (xlApp Is Nothing) Then
            MsgBox "Please start MS Excel prior running this script!!", vbCritical, "Excel not started"
            Exit Sub
        End If
    
        Dim exlBook As Object
    
        On Error Resume Next
        Set exlBook = xlApp.ActiveWorkbook
        On Error GoTo 0
    
        If (exlBook Is Nothing) Then
            MsgBox "No Workbook is openned", vbExclamation, "MS Excel is empty"
            Exit Sub
        End If
    
        MsgBox exlBook.Name
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多