VBA 从 word 文档中删除 jpg 文件并删除使用书签的页面

VBA to remove jpg file from word doc and to delete pages using books marks

美好的一天!

正在研究使用 VBA 通过用户表单按下按钮从 word 文档中删除 photo/jpg。示例:如果我想创建一个备忘录,它会保留它。如果我想创建另一个表格(不是备忘录)然后删除照片。我使用右侧格式的扭曲文本预先定位了照片。我试过在word中使用Find/Search函数来寻找特殊的图形来替换它。 >g 但找不到我要删除的 jpg。 Word 似乎没有检测到 photo/jpg。看图

Picture

我试过的代码;

Private Sub CommandButton4_Click()
ActiveDocument.Bookmarks("memodep").Delete
ActiveDocument.Bookmarks("memounit").Delete
ActiveDocument.Bookmarks("memoloc").Delete
ActiveDocument.Bookmarks("memoaddress").Delete

Do While ActiveDocument.InlineShapes.Count > 0
ActiveDocument.InlineShapes(1).Delete
Loop

Intro.Hide
OPORD.Show

Dim dod.jpg As InlineShape
For Each objPic In ActiveDocument.InlineShapes
objPic.Delete
Next objPic
End Sub


Intro.Hide
OPORD.Show

如果图形与文本内联,您可以 select 它并创建一个额外的书签来包围它。然后使用与书签内文本删除相同的代码。

如果图形是浮动的,则它锚定到文本。 (文件>选项>显示>对象锚点 使其可见)删除锚定图形的段落也会删除图形。

我怀疑它是浮动的,因为您使用 InlineShapes 的代码不工作。

“我的照片 pre-positioned 使用了右侧格式的扭曲文本。”

这意味着徽标是 Shape 而不是 InlineShape

假设您只有一个,ActiveDocument.Shapes(1).Delete 应该可以完成。

当然,当您删除徽标时,其右侧的所有文本都会移回左边距。

编辑: 您的问题遗漏了徽标位于 header.

中的重要信息

您的第一个任务是确定 header 包含在哪个部分。您的第二个任务是确定徽标包含在 3 个可能的 header 中的哪个部分。

为您指明正确的方向:

ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes(1).Delete

顺便说一句,dod.jpg 不是 VBA

中变量的有效名称