VBA实用小程序51: 将图表导出为图片(API版)

论坛 期权论坛 期权     
完美Excel   2019-6-16 04:20   4180   0
学习Excel技术,关注微信公众号:
excelperfect

在前面的VBA实用小程序15和16中,我们给出了两个将Excel图表导出为图片的VBA程序,详见下面的链接:

VBA实用小程序15:将Excel图表导出为图片
VBA实用小程序16:将Excel图表导出为图片(增强版)

这里给出的小程序来自dailydoseofexcel.com,使用Windows API来将Excel图表导出为图片。代码如下:
Declare Function OpenClipboard _
    Lib "user32" _
    (ByVal hwnd As Long) As Long
Declare Function CloseClipboard _
    Lib "user32" () As Long
Declare Function GetClipboardData _
    Lib "user32" _
    (ByVal wFormat As Long) As Long
Declare Function EmptyClipboard _
    Lib "user32" () As Long
Declare Function CopyEnhMetaFileA _
    Lib "gdi32" _
    (ByVal hENHSrc As Long, _
    ByVal lpszFile As String) As Long
Declare Function DeleteEnhMetaFile _
    Lib "gdi32" _
    (ByVal hemf As Long) As Long

Const CF_ENHMETAFILE As Long = 14
Const cInitialFilename= "Picture1.emf"
Const cFileFilter ="扩展的Windows图元文件(*.emf), *.emf"

Public Sub SaveAsEMF()
    Dim var As Variant, lng As Long

    var = Application.GetSaveAsFilename _
        (cInitialFilename, cFileFilter)
    If VarType(var)  vbBoolean Then
        On Error Resume Next
        Selection.Copy

        OpenClipboard 0
        lng = GetClipboardData(CF_ENHMETAFILE)
        lng = CopyEnhMetaFileA(lng, var)
        EmptyClipboard
        CloseClipboard
        DeleteEnhMetaFile lng
        On Error GoTo 0
    End If
End Sub

注意,在运行SaveAsEMF过程之前,需要先选中Excel图表。

程序代码的图片版如下:


欢迎分享本文,转载请注明出处。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎关注[完美Excel]微信公众号:
方法1—在微信通讯录中搜索“完美Excel”或者“excelperfect”后点击关注。
方法2—扫一扫下面的二维码

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:195
帖子:39
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP