首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel输出图表到wmf或emf?

Excel输出图表到wmf或emf?
EN

Stack Overflow用户
提问于 2009-11-24 16:50:51
回答 4查看 13.4K关注 0票数 6

我正在尝试将图表从Excel导出为wmf或emf格式。

如果将代码导出到GIF,但不使用WMF作为过滤器名,则代码可以工作。

这样做是可行的:

代码语言:javascript
复制
Chart.Export FileName:="current_sales.gif", FilterName:="GIF"

代码语言:javascript
复制
Chart.Export FileName:="current_sales.wmf", FilterName:="WMF"

未能给出错误:

运行时错误“1004”:应用程序定义的或对象定义的错误

Powerpoint允许您导出到WMF。我已经通过将图形复制到Powerpoint并让Powerpoint将图像导出到WMF来“成功地”导出,但是必须有一个更简单的方法--我希望。

我想知道是否有一种为Excel注册WMF过滤器的方法,但我不知道如何做到这一点。请帮帮我!谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-18 01:00:53

这个复制,保存方法为我工作,我把它放在三个部分(声明,保存为EMF函数,以及选择/复制/函数调用部分):

*我发现这篇文章详细说明了如何保存到EMF,然后对其进行了一些修改,以使用an ActiveChart而不是任意选择。

首先,有几个声明:

代码语言:javascript
复制
Option Explicit

Private Declare Function OpenClipboard _
    Lib "user32" ( _
        ByVal hwnd As Long) _
As Long

Private Declare Function CloseClipboard Lib "user32" () As Long

Private Declare Function GetClipboardData _
    Lib "user32" ( _
        ByVal wFormat As Long) _
As Long

Private Declare Function EmptyClipboard Lib "user32" () As Long

'// CreateMetaFileA DeleteEnhMetaFile
Private Declare Function CopyEnhMetaFileA _
    Lib "gdi32" ( _
        ByVal hENHSrc As Long, _
        ByVal lpszFile As String) _
As Long

Private Declare Function DeleteEnhMetaFile _
    Lib "gdi32" ( _
        ByVal hemf As Long) _
As Long

这是作为emf函数的实际保存(本文对CopyEnhMetaFileA和DeleteEnhMetaFile的使用作了解释):

代码语言:javascript
复制
Public Function fnSaveAsEMF(strFileName As String) As Boolean
Const CF_ENHMETAFILE As Long = 14

Dim ReturnValue As Long

    OpenClipboard 0

    ReturnValue = CopyEnhMetaFileA(GetClipboardData(CF_ENHMETAFILE), strFileName)

    EmptyClipboard

    CloseClipboard

    '// Release resources to it eg You can now delete it if required
    '// or write over it. This is a MUST
    DeleteEnhMetaFile ReturnValue

    fnSaveAsEMF = (ReturnValue <> 0)

End Function

然后选择、复制和函数调用部分:

代码语言:javascript
复制
Sub SaveIt()
Charts.Add
    ActiveChart.ChartArea.Select
    Selection.Copy
    If fnSaveAsEMF("C:\Excel001.emf") Then
        MsgBox "Saved", vbInformation
    Else
        MsgBox "NOT Saved!", vbCritical
    End If

End Sub
票数 10
EN

Stack Overflow用户

发布于 2009-12-18 10:05:41

通过本论坛条目,您可以找到奇妙的斯蒂芬·布伦的Excel页面并下载PastePicture实用程序,这说明了如何将其导出到WMF格式。

它基本上复制图表,粘贴到剪贴板作为图片,并将其内容保存到一个WMF文件中的几行代码。

票数 1
EN

Stack Overflow用户

发布于 2009-11-24 20:09:53

安迪已经详细回答了这个问题,这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1791369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档