vba - 遍历 Word 段落中的文本和图像
问题描述
我想遍历 Word 文档段落中的“对象”。假设这一段只包含字符和图像。
我找到了一种遍历字符的方法:
For Each lCharacter In pParagraph.Range.Characters
...
Next
我还找到了一种遍历图像的方法:
For Each lInlineShape In pParagraph.Range.InlineShapes
...
Next
不幸的是,这些循环不允许我知道图像在文本中的位置。
我想要的是按顺序迭代每个“对象”(角色、图像或其他东西),找到它的类型并相应地对其进行一些处理。
有没有办法这样做?
(其实我找到了一个线索:好像第一个循环在有图片的时候给了我一个字符“/”……但是我没办法检查那个“/”是代表那里有图片还是如果文本实际上包含字符“/”)。
解决方案
您必须通过某种对象类别(文档或文档中的段落)将这些内容分解为单独的查询。
您可以在文档级别查找 InlineShapes ...
Dim iShp As Word.InlineShape
For Each iShp In ActiveDocument.InlineShapes
If iShp.Type = wdInlineShapePicture Then
'do something
End If
Next
或者,如果您想以主要群体的身份查看段落,那么这样的事情将起作用,您可以在范围内包含查看字符...
Dim iShp As Word.InlineShape, oPara As Word.Paragraph
Dim chr As Variant
For Each oPara In ActiveDocument.Paragraphs
For Each iShp In oPara.Range.InlineShapes
If iShp.Type = wdInlineShapePicture Then
'do something
End If
Next
For Each chr In oPara.Range.Characters
Debug.Print chr
Next
Next
推荐阅读
- python - 以 Pythonic 方式使用 f 字符串进行字符串格式化
- .net-core - 用于 dbset 扩展的单元测试
- javascript - 更改每个不同选项卡的 URL
- python - Selenium 抓取 HTTP 错误 403:使用 wget 时的 ModSecurity 操作
- html - 如何使用 SVG sprite 作为 CSS 伪元素?
- android - 如何处理不同片段中侧面菜单的onClick
- java - 如何在Java中从头到尾清理空格?
- c# - 仅跨数据点移动垂直注释
- c# - 将 TimeSpan 转换为高于 23:59 的“hh:mm”
- wordpress - Mailchimp 表单发送到错误的列表