我有一个Word文档,它是通过将PDF文档另存为Word文档而创建的。 PDF文档有一些以黄色突出显示的文本。我需要检测突出显示的文本。我想转换并不完美。 Word文档中的某些文本显示它已突出显示,有些文本只有黄色背景但未显示为突出显示。我可以选择一些文本,然后单击菜单上的高亮显示按钮,它会显示高亮颜色,对于某些单词,它会显示无颜色。
如果我输入
,也在VBA即时窗口中?selection.formattedtext.highlightcolorindex,我得到7为一些选择,0为其他选择。
对于那些未显示为突出显示的选项,我该如何检测它们?
更新:我选择了一个“突出显示”字样并执行了调用Selection.ClearFormatting并更改了字体,但黄色突出显示仍然存在。所以这告诉我黄色突出显示不是一种格式。我还选择了没有颜色的文本,并保留了黄色突出显示。我已经确认它既不是高光也不是着色。嗯......什么可能导致亮点?
更新:我发现如果删除未突出显示的“突出显示的文本”,则删除文本右侧的文本将向左移动并保留突出显示。所以我发现如果高亮部分下面没有文字,我可以选择高亮显示。然后我可以将突出显示拖动到页面的另一部分。所以,这个亮点是一个对象。如果我右键单击它,我有格式对象等选项。
所以现在我知道这些“亮点”实际上就像是对象。如果对象下没有文字,我可以抓住并拖动它。我怎样才能使用VBA找到这些类型的对象?
我真正想要的是突出显示对象下的整个段落。这可能吗?
答案 0 :(得分:0)
好吧,我想出了怎么做。我使用了另一个StackOverflow问题来引导我回答How do you select an image that was just pasted to MS Word via VBA
我在Microsoft Word对象上从Microsoft Access运行此代码。
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

sub中实际上有更多代码,但我删除了不相关的部分。希望这可以帮助遇到同样问题的其他人。 objSelection.Text将包含形状所属的段落文本。现在我只需编写代码来处理文本并确保它是我想要的文本。