如何使用 VBA 将字形保存为图像?

Axl*_*xle 5 vba ms-word shapes

我有一个简单的要求,将嵌入 Word Doc 中的 MS-Office 绘图对象保存到图像文件中。以下代码适用于从 Powerpoint 提取图像。但是,如果我将 ActivePresentation 修改为 ActiveDocument,则它不适用于 MS-Word。导出方法不适用于形状对象。有任何想法吗?

Dim oPPTShap as Shape
For k = 1 To .Slides(intSlide).Shapes.Count
    Set oPPTShape = ActivePresentation.Slides(intSlide).Shapes(k)
    oPPTShape.Export "C:\images\s" & k & ".bmp", ppShapeFormatBMP                
Next
Run Code Online (Sandbox Code Playgroud)

小智 5

这不是很好,因为它以 EMF 格式输出每个图像,但它确实将内联形状集合中的每个图像写入单个文件。当然可以修改它以进行其他形状集合。

我想增强到直接写JPG,但到目前为止还不知道VBA通过过滤器推送WRITE输出的方式。因此,要使用这些文件,您需要运行一些外部后处理/批处理,以将文件从 EMF 转换为更有用的文件。

Sub WriteInlineShapesToFile()
    Dim docCurrent As Document
    Dim shapeCurrent As InlineShape
    Dim RC As Integer
    Dim vData() As Byte
    Dim i As Long
    Dim lWritePos As Long
    Dim strOutFileName As String

    Set docCurrent = ActiveDocument

    i = 1

    For Each shapeCurrent In docCurrent.InlineShapes
        strOutFileName = "c:\temp\datafile" & CStr(i) & ".emf"
        Open strOutFileName For Binary Access Write As #1
        i = i + 1
        vData = shapeCurrent.Range.EnhMetaFileBits
        lWritePos = 1

        Put #1, lWritePos, vData

        Close #1

 Next shapeCurrent

    RC = MsgBox("Job complete.", vbOKOnly, "Job Status")

End Sub
Run Code Online (Sandbox Code Playgroud)


JMa*_*Max 4

您尝试从 PPT VBA 复制到 Word VBA 的代码将不起作用,因为 Word 中不存在该功能。

你可以自己尝试一下:当你在Word中选择形状并右键单击时,你没有另存为图像的功能...(而在PPT中你有这个功能)。

然而,从这个页面,作者指出了一个MVP,他构建了一个 VBA 解决方案来完成您想要的操作:http://www.lebans.com/msword.htm

希望它能达到你想要的效果