2009-11-24 588 views
4

我想從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" 

失敗給人錯誤:

Run-time error '1004': Application-defined or object-defined error

簡報,您可以導出到WMF。我通過將圖形複製到Powerpoint並使用Powerpoint將圖像導出到WMF而「成功」導出,但是我希望能夠有一種更簡單的方法。

我不知道是否有辦法註冊WMF過濾器的Excel,但我不確定如何做到這一點。請幫忙!謝謝。

+0

@Alex Andronov - 是否需要使用導出命令?另一種以不同方式保存圖表的方法可以嗎? – Dostee 2009-12-18 17:33:46

回答

7

這種複製,保存方法爲我工作,我把它分成3段(報關,保存爲EMF功能,以及選擇/複製/函數調用部分):

*我發現this article詳細介紹瞭如何保存到EMF,然後使用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 
1

Andy已經回答了這個問題Here

+0

不幸的是,似乎沒有工作。 – 2009-12-11 17:51:14

+0

此建議的問題是安裝完整版本的Office不會添加WMF篩選器。 – 2009-12-14 09:19:35

+0

沒有時間測試Andy的解決方案 - 我不得不離開(因此延遲評論)我會爲您尋找WMF濾鏡。 – caving 2010-01-25 03:12:43

0

有趣的是,這張海報在這個forum這裏有完全相同的問題,在這個相關的這個有趣的文章ExcelForum

希望這對你有所幫助, 最好的問候, 湯姆。