【问题标题】:Run-Time Error 91 doesn't make sense运行时错误 91 没有意义
【发布时间】:2014-05-22 18:34:09
【问题描述】:

这个运行时错误 91 对我来说没有意义。一般来说,问题是我没有定义一些东西,但这次我已经注意到了一切。

错误在这一行:

Set f = ThisApplication.ActiveDocument.File

ThisApplication 是在开头定义的。文件是在该行之前定义的。

这是我的代码:

Option Explicit


Public Sub ReplaceReference()

Dim invApp As Inventor.Application
Set invApp = ThisApplication

Dim NameStr As String
Dim NewNamePath As String

Dim NameStr2 As String
Dim OldNamePath As String


NameStr = Renamer.New_Name.Text               'Concatenates the full new file path
NewNamePath = Renamer.Path_Text.Text & "\" + NameStr & "-" & Right("00" & i, 3) & ".ipt"
    If Err.Number <> 0 Then MsgBox "Error Found After NewNamePath:" & Err.Description
Err.Clear

NameStr2 = Renamer.Old_Name_Display.Text      'Concatenates the old file NAME
OldNamePath = NameStr2 & "-" & Right("00" & i, 3) & ".ipt"
    If Err.Number <> 0 Then MsgBox "Error Found After OldNamePath:" & Err.Description
Err.Clear

Do While i < 99

Dim f As File
Set f = ThisApplication.ActiveDocument.File
Dim fd As FileDescriptor
    For Each fd In f.ReferencedFileDescriptors
        If fd.FullFileName = OldNamePath Then
            fd.ReplaceReference (NewNamePath)
        End If
    Next


        Loop

End Sub


我知道运行时错误 91 很常见而且看起来很愚蠢,但我就是不知道它有什么问题。

【问题讨论】:

    标签: vba runtime-error autodesk


    【解决方案1】:

    你能这样检查吗?那么你能确定哪个对象是 Nothing ... 也许在你的情况下是 ActiveDocument?

    If ThisApplication Is Nothing Then
        Err.Raise 91, , "ThisApplication is Nothing!"
    Else
        If ThisApplication.ActiveDocument Is Nothing Then
            Err.Raise 91, , "ActiveDocument is Nothing!"
        Else
            If ThisApplication.ActiveDocument.File Is Nothing Then
                Err.Raise 91, , "File is Nothing!"
            End If
        End If
    End If
    
    Dim f As File
    Set f = ThisApplication.ActiveDocument.File
    

    或者像这样(减少 if 的嵌套):

    If ThisApplication Is Nothing Then
        Err.Raise 91, , "ThisApplication is Nothing!"
    End If
    
    If ThisApplication.ActiveDocument Is Nothing Then
        Err.Raise 91, , "ActiveDocument is Nothing!"
    End If
    
    If ThisApplication.ActiveDocument.File Is Nothing Then
        Err.Raise 91, , "File is Nothing!"
    End If
    

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多