2011-02-28 85 views
2

我有一個Excel工作表,其中包含三個數據透視表名稱爲PivotTable1 ... PivotTable3和活動字段名稱分別爲國家,語言和打印機的三個數據透視表。我需要的是將每個數據透視表中的所有數據都存儲到每個字符串或字符串數​​組中。任何幫助將非常感謝。從Vba中的數據透視表檢索數據

+0

任何幫助,請?????? – 1355 2011-02-28 11:55:45

回答

2

快速&骯髒的一個讓你走;一個線性字符串中的數據透視表的所有單元格,由「;」分隔。這應該給予使用哪些方法和屬性足夠的啓發。注意:Tmp不能保留無限大的數據透視表,如果它們變得非常大,請考慮將Tmp寫入文件。

Sub PTTest() 
Dim SH As Worksheet ' the current worksheet from the colection of workbooks 
Dim PT As PivotTable ' the current pivot table from the current worksheet 
Dim PTC As Range ' the cell range of the current pivot table 
Dim Tmp As String ' the buffer for concatenated cell values 

    Tmp = "" 
    ' process all sheets, as Pivot table objects are contained by sheets 
    For Each SH In ActiveWorkbook.Worksheets 

     For Each PT In SH.PivotTables 

      For Each PTC In PT.TableRange1.Cells 
       ' all cells in one buffer, seperated by ";" 
       ' if you want to include page header cells, use 
       ' "PT.TableRange2.Cells" instead 
       Tmp = Tmp & PTC & ";" 
      Next PTC 

      ' *** do something *** with the buffer 
      ' ok very simple we print it into the debugger's Immediate window 
      Debug.Print Tmp 

      ' empty buffer for next pivot table 
      Tmp = "" 

     Next PT 
    Next SH 
End Sub 

希望幫助....好運氣拾音

+0

非常感謝您的幫助。它工作得很好。但我不需要瀏覽工作簿中的所有工作表。只有一個指定的。那麼,必須做出什麼改變? – 1355 2011-03-01 04:28:11

+1

現在我在內循環之後的外循環中使用'Exit For'命令。所以我只能通過第一張工作表。這是我的需要也.. – 1355 2011-03-01 04:52:41

+1

爲一個特定工作表中的透視表,您可以刪除外部For Each SH並重寫內部循環爲「For Each PT In Worksheets(」Sheet1「)。PivotTables」 – MikeD 2011-03-01 16:24:55