我正在尝试将图表从Excel导出为wmf或emf格式。
如果将代码导出到GIF,但不使用WMF作为过滤器名,则代码可以工作。
这样做是可行的:
Chart.Export FileName:="current_sales.gif", FilterName:="GIF"但
Chart.Export FileName:="current_sales.wmf", FilterName:="WMF"未能给出错误:
运行时错误“1004”:应用程序定义的或对象定义的错误
Powerpoint允许您导出到WMF。我已经通过将图形复制到Powerpoint并让Powerpoint将图像导出到WMF来“成功地”导出,但是必须有一个更简单的方法--我希望。
我想知道是否有一种为Excel注册WMF过滤器的方法,但我不知道如何做到这一点。请帮帮我!谢谢。
发布于 2009-12-18 01:00:53
这个复制,保存方法为我工作,我把它放在三个部分(声明,保存为EMF函数,以及选择/复制/函数调用部分):
*我发现这篇文章详细说明了如何保存到EMF,然后对其进行了一些修改,以使用an ActiveChart而不是任意选择。
首先,有几个声明:
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的使用作了解释):
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然后选择、复制和函数调用部分:
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发布于 2009-12-18 10:05:41
通过本论坛条目,您可以找到奇妙的斯蒂芬·布伦的Excel页面并下载PastePicture实用程序,这说明了如何将其导出到WMF格式。
它基本上复制图表,粘贴到剪贴板作为图片,并将其内容保存到一个WMF文件中的几行代码。
发布于 2009-11-24 20:09:53
安迪已经详细回答了这个问题,这里。
https://stackoverflow.com/questions/1791369
复制相似问题