在word中的图形对象有InlineShape对象和Shape对象,其中InlineShape对象表示的是嵌入到文本层的图片,就像是文字的一部分一样,而Shape对象是悬浮于文本之上位于图形层,两者有区别。
如果想要把所有的图形对象导出为独立的图片格式文件,可以借组EnhMetaFileBits属性。
EnhMetaFileBits属性返回的是把word中的选择区域当做是一个图片,然后返回该图片的增强型图元文件字节流。
它相当于API函数GetEnhMetaFileBits ,由于增强型图元文件的文件格式默认是emf,所以在将字节流保存为图片时,默认指定扩展名为emf。
以下代码可以实现将word中的各种图形导出为独立的图片格式的
vbnet
Sub QQ527524938()
Const adTypeBinary = 1
'默认文本数据
Const adTypeText = 2
'指定保存到文件时不覆盖,只新建
Const adSaveCreateNotExist = 1
'指定保存到文件时覆盖原文件,没有则新建
Const adSaveCreateOverWrite = 2
Dim oStream As Object
Dim arr() As Byte
Set oStream = VBA.CreateObject("adodb.stream")
i = 1
Dim oDoc As Document
Set oDoc = Word.ActiveDocument
Dim oSP As Shape
Dim sPath As String
sPath = oDoc.Path & "\"
Dim oInLineSp As InlineShape
With oDoc
For Each oSP In .Shapes
oSP.Select
arr = Word.Selection.EnhMetaFileBits
With oStream
.Open
.Type = adTypeBinary
.Write arr
.SaveToFile sPath & i & ".emf", adSaveCreateOverWrite
.Close
End With
i = i + 1
Next
For Each oInLineSp In .InlineShapes
arr = oInLineSp.Range.EnhMetaFileBits
With oStream
.Open
.Type = adTypeBinary
.Write arr
.SaveToFile sPath & i & ".emf", adSaveCreateOverWrite
.Close
End With
i = i + 1
Next
End With
End Sub
文件。