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中发现了这个有趣的文章。
希望这对你有所帮助,最好的问候,汤姆。