2011-11-07 10 views
2

Excelファイル内のすべてのグラフをPNG形式でエクスポートしようとしています。チャートはワークシートに埋め込まれていませんが、代わりにが新しいシートとして作成されました。すべてのグラフをPNG形式でエクスポート

VBAやオフィスのマクロに精通していないため、Webで見つかったコード例に基づいて何かを組み合わせてみましたが、成功しませんでした。ボタンをクリックすると

Private Sub ExportChartsButton_Click() 
    Dim outFldr As String 
    Dim ws As Worksheet 
    Dim co As ChartObject 

    outFldr = GetFolder(ActiveWorkbook.Path) 
    For Each ws In ActiveWorkbook.Worksheets 
     For Each co In ws.ChartObjects 
      co.Export outFldr & "\" & ws.Name & ".png", "PNG" 
     Next 
    Next 
End Sub 

、何も起こらないように思われる:ここで

は、私は、スタンドアロンのチャートでワークシート内に埋め込まグラフでは動作しないかもしれませんが、これは、試してみたものです。

内側のループをMsgBox co.ChartObjects.Countに置き換えた場合は、私の非チャートワークシートごとに0ポップアップが表示されるので、正しいオブジェクトを繰り返し処理していないことが分かります(何も起こりません)。

したがって、ワークシート内に埋め込まれていないチャートをどのように反復するのですか?

答えて

4

解決策が見つかりました。 .Worksheetsの代わりにActiveWorkbook.Chartsを使用しなければなりませんでした。

Private Sub ExportChartsButton_Click() 
    Dim outFldr As String 
    Dim wc As Chart 
    Dim co As ChartObject 

    outFldr = GetFolder(ActiveWorkbook.Path) 
    If outFldr = "" Then 
     MsgBox "Export Cancelled" 
    Else 
     For Each wc In ActiveWorkbook.Charts 
      wc.Export outFldr & "\" & wc.Name & ".png", "PNG" 
     Next 
    End If 
End Sub 

と記録のために、GetFolder()は次のように定義されていますコメント/提案は非常に歓迎

Function GetFolder(strPath As String) As String 
    Dim fldr As FileDialog 
    Dim sItem As String 
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
    With fldr 
     .Title = "Select folder to export Charts to" 
     .AllowMultiSelect = False 
     .InitialFileName = strPath 
     If .Show = True Then sItem = .SelectedItems(1) 
    End With 
    GetFolder = sItem 
    Set fldr = Nothing 
End Function 

+0

覚えておいてください - 解決策としてあなた自身の答えを受け入れることができます。 –

+0

ありがとうございますが、私は2日後に自分の答えしか受け入れられないと信じています。私はvbaに精通しておらず、改善や改善されたソリューションを歓迎するので、これは良いことです。 –

+0

私によく見えます... –

1

おそらく、エクスポートする最も簡単な方法の1つは、ワークブック全体をWebページとして保存することです。 Excelが自動的にあなたのチャートをPNGに変換します

関連する問題