如何从Microsoft Word中的另存为HTML中删除原始图像

时间:2013-06-11 04:33:13

标签: image vba ms-word

我将活动文档保存为HTML文件,自动生成包含所有文档内嵌形状(图片)的子文件夹。我用这个代码:

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

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

如何在Active Document中确定图像是原创还是已编辑?通过获取该信息,我假设我可以删除所有其他图像(如果所有图像都被编辑)或跟踪哪些是哪些以及哪些不是。

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

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

1 个答案:

答案 0 :(得分: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

图像文件只有一个,但原始文件丢失(下一次用文字编辑),一些格式化将会丢失。请注意,在非IE浏览器中,文档的外观与完全格式化相同,只有在IE和Word中才会出现细微差别。