Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivot in Office 2007

Pivot in Office 2007
John
Hallo,
ich habe mir in Excel 2003 mühsam ein Makro zusammengebastelt, das dann auch super seine Dienste getan hat.
Mit dem Umstieg auf Office 2007 steigt das Makro bei der Erstellung der Pivot Tabelle immer aus.
Ich finde die neue Syntax einfach nicht.
Vielleicht kann mir von den Experten hier jemand helfen.
Ich wäre sehr dankbar.
Hier der Code aus Excel 2003:
Sub A09_KontenAufriss()
' B_KontenAufriss Makro
' Makro am 02.12.2008 von J. Kopp aufgezeichnet
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Cells(1, 1).Select
'Konto als Text formatieren
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 2), TrailingMinusNumbers:=True
'Alle Spalten mit Inhalt markieren
Range(Range("A1"), Selection.End(xlToRight)).EntireColumn.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Selection).CreatePivotTable TableDestination:="", TableName:= _
"PivotTable1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable1").SmallGrid = False
Sheets(1).Name = "Pivot"
If Sheets(2).Cells(1, 1).Value = "CoCd" Then GoTo englisch
'Buchungskreis in Pivot einfügen
With ActiveSheet.PivotTables("PivotTable1").PivotFields("BuKr")
.Orientation = xlPageField
.Position = 1
.PivotItems("(Leer)").Visible = False
End With
GoTo weiter
englisch:
'Buchungskreis in Pivot einfügen
With ActiveSheet.PivotTables("PivotTable1").PivotFields("CoCd")
.Orientation = xlPageField
.Position = 1
.PivotItems("(Leer)").Visible = False
End With
weiter:
FußzeileKopp
SeiteVonSeiten
End Sub

Das Makro steigt nun immer hier aus:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Selection).CreatePivotTable TableDestination:="", TableName:= _
"PivotTable1"
Ein Muster der Datei, die ich einlese hänge ich mal hier dran.
https://www.herber.de/bbs/user/81687.xls
Ich danke Euch.
John

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Pivot in Office 2007
03.09.2012 15:01:45
fcs
Hallo John,
das war jetzt eine harte Nuss.
Auch mit dem im Vergleich zu Excel 2007 deutlich besseren Makrorecorder konnte ich unter Excel 2010 keinen Code direkt hinbekommen, der dann nach den offensichtlich erforderlichen Anpassungen ohne Probleme funktioniert. Also rumdoktern und probieren.
Ich hoffe, dass die neue Version dann bei dir funktioniert.
Ich weiss ja nicht, was du mit der in Text umgewandelten KontoNr. vorhast. Im Zusammenhang mit Pivot-Auswertungen und VBA bin ich inzwischen dazu übergegangen, solche Ziffernfolgen durch Voranstellen eines Hochkommas in Text umzuwandeln. Insbesondere im Zusammenhang mit Seiten./Berichtsfeldern hab ich da sonst schon jede Menge Ärger beim automatisierten Setzen von Filterwerten gehabt.
Gruß
Franz
'Bearbeitet unter Excel 2010
Sub A09_KontenAufriss()
' B_KontenAufriss Makro
' Makro am 02.12.2008 von J. Kopp aufgezeichnet
Dim wksAktiv As Worksheet, wksPivot As Worksheet
Dim wbk As Workbook
Dim pvCache As PivotCache, pvTab As PivotTable
Dim Zelle As Range
Set wksAktiv = ActiveSheet
Set wbk = ActiveWorkbook
With wksAktiv
'Leerzeilen und Spalten löschen
.Rows("1:2").Delete Shift:=xlUp
.Columns("A:B").Delete Shift:=xlToLeft
.Rows("2:2").Delete Shift:=xlUp
'Konto-nummer in Text umwandeln
.Columns("C:C").TextToColumns Destination:=.Range("C1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 2), TrailingMinusNumbers:=True
'      For Each Zelle In .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))
'        Zelle.Value = "'" & Zelle.Text
'      Next
'Daten-Cache für Pivotdaten setzen
Set pvCache = wbk.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="'" & .Name & "'!" & .Range(.Cells(1, 1), _
.Cells(1, 1).End(xlToRight)).EntireColumn.Address(ReferenceStyle:=xlA1))
End With
'Tabellenblatt für Pivottabelle anlegen
Set wksPivot = wbk.Sheets.Add
'Pivotberricht erstellen
wksPivot.Name = "Pivot"
pvCache.CreatePivotTable TableDestination:=wksPivot.Cells(3, 1), _
TableName:="PivotTable1"
Set pvTab = wksPivot.PivotTables(1)
If wksAktiv.Cells(1, 1).Value = "CoCd" Then GoTo englisch
'Buchungskreis in Pivot einfügen
pvTab.AddFields PageFields:=Array("BuKr"), addtotable:=True
With pvTab.PivotFields("BuKr")
.PivotItems("(Blank)").Visible = False
End With
GoTo weiter
englisch:
'Buchungskreis in Pivot einfügen
pvTab.AddFields PageFields:=Array("CoCd"), addtotable:=True
With pvTab.PivotFields("CoCd")
.PivotItems("(Blank)").Visible = False
End With
weiter:
FußzeileKopp
'   SeiteVonSeiten
Set pvCache = Nothing: Set pvTab = Nothing
Set wbk = Nothing: Set wksAktiv = Nothing: Set wksPivot = Nothing: Set Zelle = Nothing
End Sub

Anzeige
AW: Pivot in Office 2007
03.09.2012 15:14:40
John
Hallo Franz,
ich bin begeistert und danke Dir von ganzem Herzen.
Zu deiner Frage betr. Konto.
Ich lade die Daten aus SAP herunter. Leider erkannte Excel 2003 nicht immer diese Spalte als "Text".
Das hatte mich veranlasst diese Umwandlung einzufügen.
Nochmals herzlichen Dank.
John

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige