2015-11-03 20 views
0

我有一個包含表格的單詞文檔。每個表中的第一行是標題,使用修改的「標題1」樣式,並且還有一個類別字段,使用修改後的標題4樣式。Word宏從衆多表格中創建餅圖

我想編寫一個宏,它將按類別對每個表進行分組,並創建一個顯示分佈的圖表。

這是可能的,如果是這樣,我可以在哪裏找到有關如何開始的參考?

我不是一個VBA編程,但我有編程語言的合理把握,並希望我能砍的東西在一起,如果我能找到合適的引用,如果它甚至有可能..

回答

0

的問題是有點過於開放,但也許這樣的事情可以幫助

'Option Explicit 

Sub CreatePie() 

    Dim shReport As Worksheet 
    Dim pc As PivotCache 
    Dim pt As PivotTable 
    Dim oChart As Shape 
    Dim arrSources As Variant 

    ' Remove the report sheet, this is just to remove the testng sheet. 
    Application.DisplayAlerts = False 
    On Error Resume Next 
    Sheets("Report").Delete 
    On Error GoTo 0 
    Application.DisplayAlerts = True 

    ' Get all the srouces. Asuming that they all start in Range("A") 
    arrSources = GetSources 

    Set shReport = Sheets.Add(After:=Sheets(Sheets.Count)) 
    shReport.Name = "Report" 
    Set pc = ActiveWorkbook.PivotCaches.Create(xlConsolidation, arrSources) 
    Set pt = pc.CreatePivotTable("Report!R1C1") 
    Set oChart = shReport.Shapes.AddChart2(, xlPie) 
    oChart.Chart.SetSourceData pt.TableRange1 

End Sub 

' Function to get all the ranges to be consolitidated. 
Function GetSources() As Variant 

    Dim sh As Worksheet 
    Dim rng As Range 
    Dim ret() As Variant 
    Dim i As Long 

    ReDim ret(Sheets.Count - 1) 

    ' Fill all the ranges 
    For i = 0 To Sheets.Count - 1 
     Set sh = Sheets(i + 1) 
     Set rng = sh.Cells(1, 1).CurrentRegion 

     ret(i) = Array(sh.Name & "!" & rng.Address(True, True, xlR1C1), "Item" & i + 1) 
    Next i 

    Var = Array(Array("Sheet1!R1C1:R5C2", "Item1"), Array("Sheet2!R1C1:R5C2", "Item2"), Array("Sheet3!R1C1:R5C2", "Item3")) 

    ' Return the value 
    GetSources = ret 

End Function 

Here is my sample file.

希望這有助於:)