ここでは 複数ブックにまたがって条件付きでピボットグラフをクラウド(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 - 条件判定 → シート名やセルの値を使って柔軟に対象を絞り込み
練習課題
- 全ブックの「Sheet2」にあるピボットグラフを OneDrive に PNG で保存するコードを書いてみる
- 各シートのC1セルが「Save」と書かれていたらピボットグラフを SharePoint に PDF で保存するコードを作る
- 複数条件を組み合わせて「シート名がReportで始まり、A1セルが空でないなら数量・売上ピボットをクラウドに保存する」コードを作る
こうした仕組みを作ると、複数ブックにまたがって条件付きでピボットグラフをクラウド(OneDriveやSharePoint)に保存する自動化ツールが完成します。


