我将活动文档保存为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
答案 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的更改设置:
或在VBA中轻松
ActiveDocument.WebOptions.RelyOnVML = True
...并保存文件。最大的缺点是图像只能在Internet Explorer中可见。
适用于所有浏览器的解决方案
保存文档时,请使用
FileFormat:=WdSaveFormat.wdFormatFilteredHTML
图像文件只有一个,但原始文件丢失(下一次用文字编辑),一些格式化将会丢失。请注意,在非IE浏览器中,文档的外观与完全格式化相同,只有在IE和Word中才会出现细微差别。