Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 确定单词注释的当前标题文本和编号_Vba_Vsto_Ms Word - Fatal编程技术网

Vba 确定单词注释的当前标题文本和编号

Vba 确定单词注释的当前标题文本和编号,vba,vsto,ms-word,Vba,Vsto,Ms Word,上下文:通过VBA或VSTO进行Microsoft Word编程 Word文档对象的Comments属性允许枚举Word文档中的所有注释 如何找到Word注释的当前标题 示例文件: 标题1 标题1.1 (通知A) 输出: 注释A-标题1.1我找不到更简单的方法,但它正在工作。以下代码正在搜索活动文档中第一条注释之前的最后一个标题。您可以使用为每个循环轻松地为所有注释采用它 Sub Heading_Above_Comment() Dim COMM As Comment Set C

上下文:通过VBA或VSTO进行Microsoft Word编程

Word文档对象的Comments属性允许枚举Word文档中的所有注释

如何找到Word注释的当前标题

示例文件:

标题1

标题1.1

(通知A)

输出:
注释A-标题1.1

我找不到更简单的方法,但它正在工作。以下代码正在搜索活动文档中第一条注释之前的最后一个标题。您可以使用
为每个循环
轻松地为所有注释采用它

Sub Heading_Above_Comment()

    Dim COMM As Comment
    Set COMM = ActiveDocument.Comments(1)

    'set new selection for range to search
    Dim rngWHERE As Range
    Set rngWHERE = ActiveDocument.Range(0, COMM.Reference.Start)
    rngWHERE.Select

    Selection.Find.ClearFormatting

    'set heading style name you applied>>
    Selection.Find.Style = ActiveDocument.Styles("Nagłówek 1")

    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = False
        .Wrap = wdFindContinue
        .Format = True
    End With

    Do While Selection.Find.Execute
        If Selection.End < COMM.Reference.Start And _
            Selection.Start > rngWHERE.Start Then
            Set rngWHERE = Selection.Range
        Else
            Exit Do
        End If
    Loop

    'select the range
    rngWHERE.Select
    'range selected is last heading
    MsgBox "last heading befor comment is selected and it is: " & Selection.Text
End Sub
注释()上方的副标题
Dim COMM As注释
Set COMM=ActiveDocument.Comments(1)
'为要搜索的范围设置新选择
变暗RNG此处为范围
设置rngWHERE=ActiveDocument.Range(0,COMM.Reference.Start)
rngWHERE。选择
Selection.Find.ClearFormatting
'设置应用的标题样式名称>>
Selection.Find.Style=ActiveDocument.Style(“Nagłówek 1”)
选择。查找
.Text=“”
.Replacement.Text=“”
.Forward=False
.Wrap=wdFindContinue
.Format=True
以
执行时执行Selection.Find.Execute
如果选择.EndrngWHERE.Start然后
设置rngWHERE=Selection.Range
其他的
退出Do
如果结束
环
'选择范围
rngWHERE。选择
'所选范围是最后一个标题
MsgBox“选择注释之前的最后一个标题为:”&Selection.Text
端接头
工作原理:


参考。转到
将带您转到当前标题(如果有)。
(另见:)

Dim COMM As Comment
Set COMM=ActiveDocument.Comments(1)
变暗航向为射程
Set heading=COMM.Reference.GoTo(What:=wdGoToHeading,Which:=wdGoToPrevious)
'获取标题编号字符串
Dim hNum$
hNum$=heading.ListFormat.ListString
'获取标题文本
暗文本$
'将范围扩大到整个段落(包括最终CR)
标题.展开单位:=WD句子
hText$=heading.Text
MsgBox hNum$&vbTab&“左(hText$,Len(hText$)-1)&”
现在,如果您想要整个级别:

Dim headingLevel作为范围
“headingLevel包含COMM前面标题下的区域
Set headingLevel=COMM.Reference.GoTo(What:=wdGoToBookmark,Name:=“\headingLevel”)

如果我想找到其他文本并获取该文本前面的标题,如何使用此选项?