
我有一个通过将PDF文档另存为Word文档而创建的Word文档。PDF文档中的某些文本以黄色突出显示。我需要检测突出显示的文本。我猜转换并不完美。Word文档中的一些文本显示为突出显示,而另一些文本仅显示为黄色背景,但未显示为突出显示。我可以选择一些文本,然后单击菜单上的突出显示按钮,它会显示突出显示的颜色,而对于某些单词,它会显示无颜色。
如果我在[ VBA即时]窗口中键入
?selection.formattedtext.highlightcolorindex,对于某些选择,我得到7,对于其他选择,我得到0。
对于那些没有突出显示的选择,我如何检测它们?
更新:我选择了一个“突出显示”的单词,并执行了call Selection.ClearFormatting,字体发生了变化,但黄色的突出显示仍然存在。所以这告诉我黄色突出显示不是一种格式。我还选择了无颜色,并选择了文本,黄色突出显示仍然存在。我已经验证了它既不是高亮也不是阴影。嗯..。是什么导致了这一亮点?
更新:我发现如果我删除了没有真正突出显示的“突出显示的文本”,被删除文本的右边的文本会移到左边,而突出显示仍然存在。然后我发现,如果高亮部分下面没有文本,我可以选择高亮。然后,我可以将突出显示拖动到页面的另一部分。所以,这个高亮显示是一个对象。如果我右击它,我会看到一些选项,比如格式化对象。
所以现在我知道这些“亮点”实际上是物体。如果对象下面没有文本,我可以抓住它并拖动它。如何使用VBA查找这些类型的对象?
我真正想要的是突出显示对象下的整个段落。这有可能吗?
发布于 2015-02-18 04:18:25
好吧,我知道怎么做了。我使用了另一个StackOverflow问题来找到答案How do you select an image that was just pasted to MS Word via VBA
我从Microsoft Access对Microsoft Word对象运行此代码。
Public Sub ReadWord2(strPath As String)
'Const wdColorRed = 255
Dim objWord As Object
Dim objDoc As Word.Document
Dim strParagraph As String
Dim intShapeCount As Integer
Dim Shape As Word.Shape
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open(strPath)
Set objSelection = objWord.Selection
intShapeCount = objDoc.Shapes.Count
'objDoc.Shapes.SelectAll
For Each Shape In objDoc.Shapes
'If Shape.AutoShapeType = 1 Then
Shape.Select
'Debug.Print Shape.Fill.BackColor
'Debug.Print Shape.AutoShapeType, Shape.Name
'Debug.Print Shape.TextFrame.TextRange.Text
objSelection.Expand wdParagraph
Debug.Print objSelection.Text, Shape.Fill.BackColor
'End If
Next
End Sub
子模块中实际上有更多的代码,但我删除了不相关的部分。希望这能帮助其他遇到同样问题的人。objSelection.Text将包含该形状所属的段落文本。现在我只需要编写代码来处理文本,并确保它是我想要的文本。
https://stackoverflow.com/questions/28566217
复制相似问题