0

我将活动文档另存为 HTML 文件,它会自动生成一个子文件夹,其中包含文档的所有内联形状(图片)。我为此使用了这段代码:

ActiveDocument.SaveAs FileName:=HTMLPath, _
 FileFormat:=wdFormatHTML, AddToRecentFiles:=True

这正是我想要的,但是对于文档中的每个图像,它会保存一个或两个文件。如果在 Word 中,图像未受影响。但是任何操作(调整大小、着色、裁剪等)都会导致此 HTML 保存生成原始图像版本并进行编辑。我想删除原件。图像只是像 image001.png、image002.png 等那样递增,所以我无法比较文件名,文件大小可能不同等。

如何确定活动文档中的图像是原始的还是编辑过的?通过获得这些信息,我假设我可以删除所有其他图像(如果所有图像都已编辑)或跟踪哪些是,哪些不是。

如果我有这样的循环,可以存储一个数组或其他东西来确定哪些是原始的或编辑过的。

For Each oILShp In ActiveDocument.InlineShapes
    'if oILShp is not edited, add current index to array
    'loop through array and delete images that have an original and edited version
Next
4

1 回答 1

1

我认为这是不可能的,因为原始图像显示在 Internet Explorer 中(带有过滤器,如裁剪),而第二个图像显示在其他浏览器中。

非IE浏览器解决方案

当您删除原始文件时,它将仅在非 IE 浏览器中可见。如果您想这样做,请将 HTML 文件作为字符串打开并搜索,其中列出了每个文件。如果文件名前面有标签“v:imagedata”,则将其删除。例如

<v:imagedata src="x_files/image001.jpg"

如果它前面有标签“img”,请不要删除它:

<img width=181 height=241 src="x_files/image002.jpg"

仅 Internet Explorer 的解决方案是更改 Word 的设置:

  • 在工具菜单上,单击选项。
  • 单击常规选项卡,然后单击 Web 选项。
  • 单击浏览器选项卡。
  • 在选项下,选中依赖 VML 在浏览器中显示图形复选框。

或在 VBA 中轻松

ActiveDocument.WebOptions.RelyOnVML = True

...并保存文档。最大的缺点是图像只能在 Internet Explorer 中可见。

适用于所有浏览器的解决方案

保存文档时,请使用

 FileFormat:=WdSaveFormat.wdFormatFilteredHTML

图片文件将只有一个,但原始文件丢失(用于下次编辑word),并且会丢失一些格式。请注意,在非 IE 浏览器中,文档的外观与完整格式相同,细微差别仅在 IE 和 Word 中可见。

于 2013-06-11T12:56:02.423 回答