Excel VBA | 複数ブックにまたがって条件付きでピボットグラフをクラウドに保存する

VBA
スポンサーリンク

ここでは 複数ブックにまたがって条件付きでピボットグラフをクラウド(OneDriveやSharePoint)に保存する VBA の例を紹介します。ポイントは「複数ブックをループして条件に合致するピボットテーブルを探し、そのグラフを作成してファイルとして保存する」ことです。

⚠️ 注意

  • VBA から直接 OneDrive や SharePoint に保存する場合は、クラウドと同期されたローカルフォルダ(例: C:\Users\<ユーザー名>\OneDrive\...C:\Users\<ユーザー名>\SharePoint\...)を保存先に指定します。
  • そのフォルダに保存すれば、自動的にクラウドへアップロードされます。

基本例:数量・売上ピボットをグラフ化して OneDrive に保存

Sub 複数ブックでピボットグラフをOneDrive保存()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim chartObj As ChartObject
    Dim savePath As String
    
    ' OneDriveの同期フォルダを指定(例)
    savePath = "C:\Users\YourName\OneDrive\PivotExports\"
    
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            For Each ws In wb.Worksheets
                ' 条件:シート名が「Data」
                If ws.Name = "Data" Then
                    For Each pt In ws.PivotTables
                        If InStr(pt.Name, "数量") > 0 Or InStr(pt.Name, "売上") > 0 Then
                            ' グラフ作成
                            Set chartObj = ws.ChartObjects.Add(Left:=300, Top:=50, Width:=400, Height:=300)
                            chartObj.Chart.SetSourceData Source:=pt.TableRange2
                            chartObj.Chart.ChartType = xlColumnClustered
                            chartObj.Chart.HasTitle = True
                            chartObj.Chart.ChartTitle.Text = pt.Name & " グラフ"
                            
                            ' PNG画像として保存(OneDriveフォルダ)
                            chartObj.Chart.Export Filename:=savePath & ws.Name & "_" & pt.Name & ".png", FilterName:="PNG"
                            
                            chartObj.Delete
                        End If
                    Next pt
                End If
            Next ws
        End If
    Next wb
End Sub
VB

👉 開いているすべてのブックから「Data」シートにある 数量ピボット売上ピボット をグラフ化し、OneDrive の同期フォルダに PNG 画像として保存します。


応用例:セルの値で判定して SharePoint に保存

Sub セル値でピボットグラフをSharePoint保存()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim chartObj As ChartObject
    Dim savePath As String
    
    ' SharePoint の同期フォルダを指定(例)
    savePath = "C:\Users\YourName\SharePoint\TeamSite\PivotExports\"
    
    For Each wb In Application.Workbooks
        For Each ws In wb.Worksheets
            ' A1セルが「保存」と書かれていたら対象
            If ws.Range("A1").Value = "保存" Then
                For Each pt In ws.PivotTables
                    Set chartObj = ws.ChartObjects.Add(Left:=300, Top:=50, Width:=400, Height:=300)
                    chartObj.Chart.SetSourceData Source:=pt.TableRange2
                    chartObj.Chart.ChartType = xlPie
                    chartObj.Chart.HasTitle = True
                    chartObj.Chart.ChartTitle.Text = pt.Name & " グラフ"
                    
                    ' PDFとして保存(SharePointフォルダ)
                    chartObj.Chart.ExportAsFixedFormat Type:=xlTypePDF, _
                        Filename:=savePath & ws.Name & "_" & pt.Name & ".pdf"
                    
                    chartObj.Delete
                Next pt
            End If
        Next ws
    Next wb
End Sub
VB

ポイント

  • クラウド保存は「同期フォルダ」を指定するだけで可能
  • 画像保存Chart.Export Filename:=..., FilterName:="PNG"
  • PDF保存Chart.ExportAsFixedFormat Type:=xlTypePDF
  • 条件判定 → シート名やセルの値を使って柔軟に対象を絞り込み

練習課題

  1. 全ブックの「Sheet2」にあるピボットグラフを OneDrive に PNG で保存するコードを書いてみる
  2. 各シートのC1セルが「Save」と書かれていたらピボットグラフを SharePoint に PDF で保存するコードを作る
  3. 複数条件を組み合わせて「シート名がReportで始まり、A1セルが空でないなら数量・売上ピボットをクラウドに保存する」コードを作る

こうした仕組みを作ると、複数ブックにまたがって条件付きでピボットグラフをクラウド(OneDriveやSharePoint)に保存する自動化ツールが完成します。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました