首先我創建4和樞軸表1個到表命名OOTWeeklyTrendperPlatform,OOTWeeklyTrendperFailureMode,OverallWeeklyTrendperDereel,OverallWeeklyTrendperEngDataValue。這些部分已成功完成。VBA:在1片創建來自多個樞軸表的多個樞軸圖表[錯誤:對象「_chart」的方法「SetSourceData」失敗]
之後,從這4個數據透視表我想創建數據透視圖。所以在1個工作表中有4個數據透視表和4個透視圖。
我的工作順序是這樣的(表格和圖表名稱僅用於說明目的)table1然後是chart1然後是table2然後是chart2等等。問題是在完成table1,chart1和table2之後;生成圖表2(或第二個圖表對應於表格2)時出現錯誤。請在下面找到縮短的代碼。
Sub MakePivotTableDereel()
Dim PTCache As PivotCache, PTCache1 As PivotCache
Dim PT As PivotTable, PT1 As PivotTable, PT2 As PivotTable, PT3 As PivotTable
Dim rngChart As Range, rngChart1 As Range, rngChart2 As Range, rngChart3 As Range
Dim objChart As ChartObject, objChart1 As ChartObject, objChart2 As ChartObject, objChart3 As ChartObject
Dim PivotDereel As Worksheet
Application.ScreenUpdating = False
' Delete PivotSheet if it exists
On Error Resume Next
Application.DisplayAlerts = False
Sheets("PivotDereel").Delete
On Error GoTo 0
' Create Pivot Cache
Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("Data").Range("A1").CurrentRegion.Address)
' Add PivotDereel sheet
Set PivotDereel = Worksheets.Add
ActiveSheet.Name = "PivotDereel"
Cells(1, 1).Value = "OOT Weekly Trend per Platform"
Cells(1, 1).Font.Size = 16
Cells(1, 15).Value = "OOT Weekly Trend per Failure Mode"
Cells(1, 15).Font.Size = 16
Cells(1, 29).Value = "Overall Weekly Trend per Dereel"
Cells(1, 29).Font.Size = 16
Cells(1, 39).Value = "Overall Weekly Trend per Eng Data Value"
Cells(1, 39).Font.Size = 16
' Create pivot table OOTWeeklyTrendperPlatform
Set PT = ActiveSheet.PivotTables.Add(PivotCache:=PTCache, TableDestination:=PivotDereel.Cells(4, 1), TableName:="OOTWeeklyTrendperPlatform")
' set table properties below
With PT
.PivotFields("Work Week").Orientation = xlRowField
.PivotFields("PLATFORM").Orientation = xlColumnField
.PivotFields("EngDataValue").Orientation = xlPageField
.PivotFields("LotID").Orientation = xlDataField
.DisplayFieldCaptions = False
.TableStyle2 = "PivotStyleMedium2"
.PivotFields("Count of LotID").Caption = "Lot ID"
End With
' Filter unwanted data below
PT.PivotFields("EngDataValue").CurrentPage = "(All)"
With PT.PivotFields("EngDataValue")
.PivotItems("BROKEN SEAL").Visible = False
'.PivotItems("DAMAGED MATERIAL").Visible = False
.PivotItems("COGHOLE DAMAGE").Visible = False
'.PivotItems("DEBRIS IN TAPE").Visible = False
.PivotItems("DRIFTED COVER TAPE").Visible = False
'.PivotItems("DROPPED REEL").Visible = False
.PivotItems("EMPTY POCKET").Visible = False
'.PivotItems("ENGINEERING REQUEST").Visible = False
.PivotItems("LOOSE COVER TAPE").Visible = False
.PivotItems("MACHINE COUNT ERROR").Visible = False
.PivotItems("MACHINE LOCKED UP").Visible = False
.PivotItems("OUT OF MATERIALS").Visible = False
.PivotItems("OUT OF PURGE TIME").Visible = False
'.PivotItems("OVER/UNDER SEALED").Visible = False
.PivotItems("PART OUT OF POCKET").Visible = False
'.PivotItems("PO ERROR").Visible = False
.PivotItems("TECH PURGED SYSTEM").Visible = False
.PivotItems("THICK/THIN SEAL").Visible = False
End With
PT.PivotFields("EngDataValue").EnableMultiplePageItems = True
' Create pivot chart OOTWeeklyTrendperPlatform
Debug.Print PT.TableRange2.Columns.Count
'Use the ChartObjects.Add Method to add an embedded Pivot Chart, which is represented as a ChartObject object. Note that the arguments Left and Width are mandatory to specify in this method. This method allows you to set the position and size (both in points) of the chart.
Set objChart = Sheets("PivotDereel").ChartObjects.Add(Left:=10, Top:=25 * (PT.TableRange2.Rows.Count), Width:=300, Height:=200)
'set data source range for the Chart:
Set rngChart = PT.TableRange2
With objChart.Chart
.SetSourceData Source:=rngChart
End With
With objChart.Chart
.HasTitle = True
.ChartTitle.Characters.Text = "OOT Weekly Trend per Platform"
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 14
End With
' Create pivot table OOTWeeklyTrendperFailureMode
Set PT1 = ActiveSheet.PivotTables.Add(PivotCache:=PTCache, TableDestination:=PivotDereel.Cells(4, 15), TableName:="OOTWeeklyTrendperFailureMode")
With PT1
.PivotFields("Work Week").Orientation = xlRowField
.PivotFields("Failure Mode").Orientation = xlColumnField
.PivotFields("EngDataValue").Orientation = xlPageField
.PivotFields("LotID").Orientation = xlDataField
.DisplayFieldCaptions = False
.TableStyle2 = "PivotStyleMedium2"
.PivotFields("Count of LotID").Caption = "Lot ID"
End With
PT1.PivotFields("EngDataValue").CurrentPage = "(All)"
With PT1.PivotFields("EngDataValue")
.PivotItems("BROKEN SEAL").Visible = False
'.PivotItems("DAMAGED MATERIAL").Visible = False
.PivotItems("COGHOLE DAMAGE").Visible = False
'.PivotItems("DEBRIS IN TAPE").Visible = False
.PivotItems("DRIFTED COVER TAPE").Visible = False
'.PivotItems("DROPPED REEL").Visible = False
.PivotItems("EMPTY POCKET").Visible = False
'.PivotItems("ENGINEERING REQUEST").Visible = False
.PivotItems("LOOSE COVER TAPE").Visible = False
.PivotItems("MACHINE COUNT ERROR").Visible = False
.PivotItems("MACHINE LOCKED UP").Visible = False
.PivotItems("OUT OF MATERIALS").Visible = False
.PivotItems("OUT OF PURGE TIME").Visible = False
'.PivotItems("OVER/UNDER SEALED").Visible = False
.PivotItems("PART OUT OF POCKET").Visible = False
'.PivotItems("PO ERROR").Visible = False
.PivotItems("TECH PURGED SYSTEM").Visible = False
.PivotItems("THICK/THIN SEAL").Visible = False
End With
PT1.PivotFields("EngDataValue").EnableMultiplePageItems = True
' Create pivot chart OOTWeeklyTrendperFailureMode
'Use the ChartObjects.Add Method to add an embedded Pivot Chart, which is represented as a ChartObject object. Note that the arguments Left and Width are mandatory to specify in this method. This method allows you to set the position and size (both in points) of the chart.
Set objChart1 = Sheets("PivotDereel").ChartObjects.Add(Left:=10, Top:=25 * (PT1.TableRange2.Rows.Count), Width:=300, Height:=200)
'set data source range for the Chart:
Set rngChart1 = PT1.TableRange2
With objChart1.Chart
.SetSourceData Source:=rngChart1
End With
With objChart.Chart
.HasTitle = True
.ChartTitle.Characters.Text = "OOT Weekly Trend per Platform"
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 14
End With
'below is the portion to create 3rd and 4th pivot tables and charts
end sub
我得到錯誤:對象 '_chart' 的方法 'SetSourceData' 失敗在一部分,
With objChart1.Chart
.SetSourceData Source:=rngChart1
End With
這部分假設分配源數據的第二個圖表。但它失敗了。你有解決方案嗎?
從現在開始我還沒有嘗試過您的解決方案。但我很好奇AddChart2 332的一部分。 332指的是什麼? – Charlo123 2014-09-28 01:46:50
您的解決方案對我無效。 – Charlo123 2014-09-29 02:14:37
322是圖表類型。 – 2014-09-29 11:39:04