vba 对象变量或未设置块变量(错误 91)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20692280/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 17:27:51  来源:igfitidea点击:

Object variable or With block variable not set (Error 91)

vbams-publisher

提问by GBleaney

I have the following code:

我有以下代码:

Sub AddSources()
    Dim pubPage As Page
    Dim pubShape As Shape
    Dim hprlink As Hyperlink
    Dim origAddress() As String
    Dim exportFileName As String
    exportFileName = "TestResume"
    Dim linkSource As String
    linkSource = "TestSource2"
    Dim hyperLinkText As TextRange



    For Each pubPage In ActiveDocument.Pages
        For Each pubShape In pubPage.Shapes
            If pubShape.Type = pbTextFrame Then
                For Each hprlink In pubShape.TextFrame.TextRange.Hyperlinks
                    If InStr(hprlink.Address, "http://bleaney.ca") > 0 Then
                        hyperLinkText = hprlink.Range
                        origAddress = Split(hprlink.Address, "?source=")
                        hprlink.Address = origAddress(0) + "?source=" + linkSource
                        hprlink.Range = hyperLinkText
                    End If
                Next hprlink
            End If
        Next pubShape
    Next pubPage
    ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "C:\" + exportFileName + ".pdf"
End Sub

I am getting the "Object variable or With block variable not set (Error 91)" error on the line with hyperLinkText = hprlink.Range. When I debug I can see that hprlink.Rangedoes have a value. Any thoughts what I'm doing wrong?

我在带有hyperLinkText = hprlink.Range. 当我调试时,我可以看到它hprlink.Range确实具有价值。任何想法我做错了什么?

回答by Barranka

As I wrote in my comment, the solution to your problem is to write the following:

正如我在评论中所写,解决您的问题的方法是编写以下内容:

Set hyperLinkText = hprlink.Range

Setis needed because TextRangeis a class, so hyperLinkTextis an object; as such, if you want to assign it, you need to make it point to the actual object that you need.

Set需要是因为TextRange是一个类,所以hyperLinkText是一个对象;因此,如果要分配它,则需要使其指向所需的实际对象。