Excel导出图表为wmf或emf?

我正试图从Excel导出图表到wmf或emf格式。

如果您导出到GIF,但不与WMF作为filtername,代码工作。

这工作:

Chart.Export FileName:="current_sales.gif", FilterName:="GIF" 

 Chart.Export FileName:="current_sales.wmf", FilterName:="WMF" 

没有给出错误:

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

Powerpoint允许您导出到WMF。 我已经成功地通过将graphics复制到Powerpoint中导出,并将Powerpoint导出到WMF,但是我希望有一个更简单的方法。

我想知道是否有办法注册WMFfilter的Excel,但我不确定如何做到这一点。 请帮忙! 谢谢。

这个副本,保存方法为我工作,我把它分为3部分(声明,保存为EMFfunction,和select/复制/函数调用部分):

*我发现这篇文章详细说明如何保存到EMF,然后用一个ActiveChart来代替任意select。

首先是几个声明:

 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 

然后select,复制和函数调用部分:

 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 

安迪在这里详细地回答了这个问题。

通过这个论坛入口,您可以find奇妙的Stephen Bullen的Excel页面,并下载PastePicture实用程序 ,该实用程序显示了如何导出为WMF格式。

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

有趣的是,这个海报在这个论坛上有完全相同的问题,在这个相关的ExcelForum中发现了这个有趣的文章。

希望这对你有所帮助,最好的问候,汤姆。