当前位置: 首页 > 知识库问答 >
问题:

无法使用InsertCrossInformation(导致运行时错误4198)

洪鸿博
2023-03-14

我在一个字符串集合中循环(看起来像“图1”),查找Word文档中出现的每个字符串,并尝试在每个字符串上插入对标题的交叉引用(我的标题遵循此模式“图1[00:01:20]”)。由于某些原因,它在包含“InsertCrossReference”方法的行上完全失败(抛出运行时错误4198,消息为“Command failed”)。到目前为止,我的部分代码如下:

For Each Match In AllMatches 'for each word in my AllMatches collection
    Set rngFind = ActiveDocument.Content
    With rngFind.Find
        .Forward = True
        .ClearFormatting
        .Text = Match.value
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .Wrap = wdFindStop
        Do While .Execute
            rngFind.InsertCrossReference ReferenceType:="Figure", _
                ReferenceKind:=wdOnlyLabelAndNumber, _
                ReferenceItem:=Match.value, _ 'Match.value looks like "Figure 1 [00:01:20]" (like in the picture below)
                InsertAsHyperlink:=True, _
                IncludePosition:=False, _
                SeparateNumbers:=False, _
                SeparatorString:=" "
        Loop
    End With
Next Match

我试图调查,发现“UBound(ActiveDocums."返回"0"(当我使用"wdCaptionFIG"作为参考类型时相同)。

当我手动尝试插入交叉引用时,一切正常(见下图)。。。

当我记录手动插入并尝试运行word生成的代码时,它失败了!

问题是否可能是因为之前在形状上而不是在inlineshapes上使用VBA插入了标题(带有循环和“.InsertCaption标签:=wdCaptionFigure”等)?

----编辑----

下面是触发错误的一些步骤,它们似乎证实了在形状上插入标题而不是在形状上插入标题会导致以后的交叉引用错误。

>

  • 创建一个空白word文档(我正在使用word 2016)
  • 插入图片
  • 将图片格式换行文本选项从“与文本对齐”(=inlineshape)更改为其他任何内容(例如“通过”)
  • 右键单击图片并插入标题(参考类型:“Figure”,其标题为:“Figure 1”)
  • 将图片格式更改回“与文本一致”
  • 在文档中插入一些文本(“例如,我是一个测试”)
  • 选择“我是测试”并运行以下宏:

    子Macro1()选择。InsertCross引用引用类型:="图",引用类型:=wdEntireCaption,引用项:="1", InsertAsHyperlink:=True,包含位置:=False,分离数字:=False,分离字符串:="结束子

    这将触发4198错误。如果省略步骤3和步骤5,则没有错误。我完全被这个困住了。如果你们中的一个能帮我,我会很高兴的。

  • 共有1个答案

    束俊英
    2023-03-14

    我也有类似的问题。我通过创建一个数组来解决这个问题,将范围保存到.执行循环,然后在查找完成后循环遍历数组以插入交叉引用。这里有一个例子:

    Dim docRange As Range
    Set docRange = ActiveDocument.Content
    Dim terms() As Range, X As Long
    X = 0
    With docRange.Find
    ...
        While .Execute
            docRange.Select
                If .found Then
                    ReDim Preserve terms(X)
                    Set terms(X) = Selection.Range
                    X = X + 1
                End If
            Selection.Collapse
        Wend
    End With
    Dim i As Integer
    For i = 0 To UBound(terms)
        terms(i).InsertCrossReference _
                    ReferenceType:=wdRefTypeBookmark, _
                    ReferenceKind:=wdContentText, _
                    InsertAsHyperlink:=True, _
                    ReferenceItem:=mark
    
    Next i
    
     类似资料:
    • 问题内容: 每次我尝试运行此应用程序时,它都会生成OK并安装,但是一旦运行,该应用程序就会中断并显示以下错误消息: 我在这里和App Developer论坛上都看到过许多类似的帖子,但都没有人提供解释或有效的修复方法。 我试过了: 清洁和建筑 重新启动XCode 重新启动Mac 完全重置钥匙串 验证所有钥匙串证书信任设置都在“使用系统默认值”上 恢复出厂设置我的Mac 我的iOS设备似乎有问题。该

    • 我使用以下源代码创建了自己的SDF模式:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/simpledateformat.html 导致以下错误,我不明白原因: 任何帮助都会很棒! 编辑:我正在使用JDK 13 进程结束,退出代码为%1

    • 问题内容: 当我编译一个android应用程序时(我尝试了sdk中的示例程序)。我收到此错误: 但是aapt在那个位置吗? 注意:我也收到错误“ R无法解决”,但是我很确定在解决问题1时,我也解决了这个问题 问题答案: Ubuntu 14.04.1 LTS解决方案: 原因:aapt需要安装32位库

    • 在本例中,我在一个包含2个副本的部署中运行“echoheaders”Nginx。当我删除一个pod时,我有时会收到约40秒的缓慢响应和错误。 我们正在库伯内特斯运行我们的API网关,并且需要能够允许库伯内特斯调度程序在它认为合适的时候处理pod。 我们最近想引入会话相关性,为此,我们想迁移到新的闪亮的NEG:网络endpoint组:https://cloud.google.com/load-bal

    • 问题内容: 我正在尝试安装SonarQube:我已经遵​​循了以下步骤: 设置SOnarQube Tuto:此处 总结一下: 下载Sonar并将其移至 将这些coonfig步骤添加到 : sonar.jdbc.username =声纳sonar.jdbc.password =声纳 sonar.jdbc.url = jdbc:mysql:// localhost:3306 / sonar?useUn