+ -
当前位置:首页 → 问答吧 → 请问如何利用VBA判断一段Word文字是否有批注对象?

请问如何利用VBA判断一段Word文字是否有批注对象?

时间:2009-04-14

来源:互联网

rt。请问如何利用VBA来判断选中的一段word文字是否存在关联的批注对象?如果有,如何获取该批注对象?谢谢!
打算录制宏,结果右键无法选择编辑批注:(

作者: yumail312   发布时间: 2009-04-14

引用:
原帖由 yumail312 于 2009-4-14 11:21 发表
rt。请问如何利用VBA来判断选中的一段word文字是否存在关联的批注对象?如果有,如何获取该批注对象?谢谢!
打算录制宏,结果右键无法选择编辑批注:(
Sub GetComment()
    Dim myRange As Range
    Dim oComment As Comment
    Set myRange = Selection.Range
    If myRange.Comments.Count > 0 Then
        For Each oComment In myRange.Comments
            Debug.Print oComment.Range.Text
        Next
    End If
End Sub

作者: 守柔   发布时间: 2009-04-14

谢谢答复。如果在word中这段应该没有问题,问题是我从excel的VBA中获取word的批注似乎有问题。
在excel中获取所选的有批注的word文字后,得到的批注数始终是0
with myFile.Windows.Application.Selection
       i = .Comments.Count
end with

作者: yumail312   发布时间: 2009-04-14

引用:
原帖由 yumail312 于 2009-4-14 14:37 发表
谢谢答复。如果在word中这段应该没有问题,问题是我从excel的VBA中获取word的批注似乎有问题。
在excel中获取所选的有批注的word文字后,得到的批注数始终是0
with myFile.Windows.Application.Selection
        ...
楼主的话我读着感觉有些味。
您说了在Excel中说Word吗?myFile.Windwos.Application是哪个程序的呢?看来遇到高手了。

作者: 守柔   发布时间: 2009-04-14

看来版主误会了,是我的问题没说清楚。sorry
目的是想通过Excel选中了一段Word的文字,要判断这段文字是否有关联的批注。
现在已经可以选中一段需要的文字,确实也有批注,但是count返回是0。不得其解,请版主告知,谢谢!

作者: yumail312   发布时间: 2009-04-14

引用:
原帖由 yumail312 于 2009-4-14 20:38 发表
看来版主误会了,是我的问题没说清楚。sorry
目的是想通过Excel选中了一段Word的文字,要判断这段文字是否有关联的批注。
现在已经可以选中一段需要的文字,确实也有批注,但是count返回是0。不得其解,请版主告知 ...
Sub GetComment()
'请在EXCEL VBE 工具/引用中勾选对于 MS Word的引用(Microsoft Word 11.0 Object Library)
    Dim myRange As Word.Range
    Dim oComment As Word.Comment
    Set myRange = Word.Selection.Range
    If myRange.Comments.Count > 0 Then
        For Each oComment In myRange.Comments
            Debug.Print oComment.Range.Text
        Next
    End If
End Sub

附件

Snap100.jpg(42.68 KB)

2009-4-15 06:16

作者: 守柔   发布时间: 2009-04-15

谢谢版主的帮助。已经选择了word对象库。现在在Excel通过find查找到一段有批注的文字并选中后,通过Word.selection.Range获取到一个Word.Range对象。但是返回的Range.Comments.Count始终是0,郁闷啊!就是不知道为什么会这样。后来我在Word中录制宏,当查到该段有批注的文字后,在键盘上按右键按钮并选择“编辑批注”,可以将光标选择到批注内容的最后位置,并能编辑。按Escape可以退出到Word文本中,查看录制的宏内容如下:
WordBasic.AnnotationEdit
Word.Selection.MoveLeft Unit:=wdSentence, Count:=1, Extend:=wdExtend
Word.Selection.TypeText text:="123"
Word.Selection.EscapeKey
但是这样会有个问题,如果查找到的文字本身无批注(有时候需要对无批注的内容自动增加批注),调用到WordBasic.AnnotationEdit后会直接退出程序,请问如何解决啊?是否有WordBasic命令或其他方法能判断当前选择内容有无批注呢?多谢!

[ 本帖最后由 yumail312 于 2009-4-17 15:27 编辑 ]

作者: yumail312   发布时间: 2009-04-17

引用:
原帖由 yumail312 于 2009-4-17 15:23 发表
谢谢版主的帮助。已经选择了word对象库。现在在Excel通过find查找到一段有批注的文字并选中后,通过Word.selection.Range获取到一个Word.Range对象。但是返回的Range.Comments.Count始终是0,郁闷啊!就是不知道为什 ...
一个极其简单的问题,就这样,被无限复杂化。
楼主,您如果愿意的话,把你的EXCEL上传,或者把你的全部代码上传一下,行不?
问题不是代码,问题是你的思路。

作者: 守柔   发布时间: 2009-04-17


结果呢?

作者: sobne   发布时间: 2009-04-22

楼主上传你的文件,好知道结果

作者: 三戒   发布时间: 2009-04-23

我也碰到了这个问题。
在excel的vba环境使用 WdApp.Selection.Comments.count,得到的也是0.
在word中查看是有批注的。
在word的vba环境使用Selection.Comments.count,得到的也是0.

作者: sandwich   发布时间: 2011-08-10