使用VBA从Word文档中的形状中提取文本

时间:2019-11-23 03:10:01

标签: vba ms-word

我正在尝试从Word文档中的形状内部获取文本。我正在使用超级简单的代码对其进行测试:

Sub textgrab()
  MsgBox ActiveDocument.Shapes("Rectangle 85").TextFrame.TextRange.Text
End Sub

除了我一直收到错误:

Run-time error '-2147024809 (80070057)':
The item with the specified name wasn't found.

我无法弄清楚为什么会出现此错误,因为当我进入Word文档并转到顶部菜单时,单击“形状格式”选项卡,然后在“排列”部分中,选择“选择窗格” ,并获得所有形状的完整列表,“ Rectangle 85”在那里,当我选择它时,它会高亮显示我试图从中获取值的相应框。

可能值得注意的是,这是我用文字打开的pdf。我正在尝试自动化一个过程,该过程将打开pdf发票,获取总金额,然后将其提取到excel中。

在解决此问题方面的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

为那些后来发现这一问题的人提供了解决方案。我使用了以下内容:

ActiveDocument.ActiveWindow.Panes(1).Pages(1).Rectangles.Item(i).Range

答案 1 :(得分:0)

Word只能从图形对象中提取文本。例如,它们从Insert/Shapes插入UI中。 Shape.TextFrame.TextRange没有OCR功能,因此不能用于将文本“嵌入”到其他类型的图形对象中,例如嵌入式PDF文件或JPG或任何类似的东西。

如果不确定某个特定的Shape是否支持阅读或书写文本,请在UI中右键单击该文本,然后查看菜单选项Add TextEdit Text是否可用。