MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 21.02.2018, 14:51   #1
buddboy
Neuer Benutzer
Neuer Benutzer
Standard Excel2010 - Pivot erstellen - Aufgenommenes Makro hakt

Halo Leute,
ich habe Probleme beim Erstellen einer Pivot-Tabelle mit Hilfe von VBA. Hier kommt immer die Fehlermeldung "Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument"

Nachfolgenden Code habe ich durch den Makro-Rekorder erhalten (habe auch relative Aufzeichnung probiert)

Code:

Sub Makro2()

'
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Orders", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination _
        :="P-Orders!R1C1", TableName:="PivotTable2", DefaultVersion:= _
        xlPivotTableVersion14
    Sheets("P-Orders").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Purchase Date")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
        "PivotTable2").PivotFields("Quantity"), "Summe von Quantity", xlSum
    ActiveCell.Offset(2, 3).Range("A1").Select
End Sub
Vielleicht wichtig: Die Tabellenblätter "P-Orders" und "D-Orders" sind vorhanden. Die Tabelle in "D-Orders" hat den Namen "Orders".

Würde mich sehr über eure Hilfe freuen.
beste Grüße
Felix
buddboy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2018, 15:12   #2
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Moin Moin Felix

An welcher Stelle steigt denn der Code aus?

Grüße
jack_D ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 08:39   #3
buddboy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Jack,
danke für die Antwort. Der gesamte block ist gelb markiert:

"ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Orders", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination _
:="P-Orders!R1C1", TableName:="PivotTable2", DefaultVersion:= _
xlPivotTableVersion14"
buddboy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 09:02   #4
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

Hallo buddboy,

sicher stolpert die Wiederholung des aufgezeichneten Codes über diese Stelle: SourceData:= "Orders"

Sie besagt, daß es in der Arbeitsmappe eine Zellbereich gibt, der als Name definiert ist (hier: Orders). Siehe dazu in den Namensmanager (Strg+F3).
Wenn der fehlt, dann scheitert der Codeablauf und der Bereich muß dann so angegeben werden:
SourceData:= "Tabelle1!$B$1:$Z$45 o.ä.

Gruß von Luschi
aus klein-Paris
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 09:19   #5
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Moin Moin

@Luschi
Der TE hat angegeben

Zitat:

Vielleicht wichtig: Die Tabellenblätter "P-Orders" und "D-Orders" sind vorhanden. Die Tabelle in "D-Orders" hat den Namen "Orders".

Dürfte dann also nciht die Ursache sein..?

Ich hätte noch folgende Ideen:

1. Die Destination ist "Voll" (Da ist schon eine Pivot)
2. Der Pivotname ist schon vergeben

Ich empfehle daher immer eine Prüf oder Löschroutine vorm erstellen.

Grüße
Jack
jack_D ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 09:47   #6
buddboy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo ihr zwei,
vielen Dank für die schnellen antworten.
@Luschi:

Im Namensmanager ist es vorhanden:
Name = Orders
Wert = ...
Bezieht sich auf = 'D-Orders'!$A$2:$R$2565

Der Name wird mit einem Makro einen schritt davor erstellt
Code:

  Set RangeTabelle = ActiveSheet.UsedRange
  ActiveSheet.QueryTables("Orders").Delete
  ActiveSheet.ListObjects.Add(xlSrcRange, RangeTabelle, , xlYes).Name = _
    "Orders"
  Range("Orders[#All]").Select
  ActiveSheet.ListObjects("Orders").TableStyle = "TableStyleMedium1"
@Jack:
Es sind keine weiteren Pivots in der Tabelle. Komisch ist, dass ich das aufgenommene Makro auch nicht nochmal abspielen kann.

Was genau meinst du mit der Prüf-/Löschprozedur?
buddboy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 10:13   #7
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

Hallo buddboy,

in den Foren höre ich immer wieder schöne Sonntagsreden, wenn man dann aber eine Demodatei fordert und reinguckt, dann ist von den Versprechungen nicht viel übrig geblieben.
Also: stell bitte eine Demodatei hier rein, damit man was in der Hand hat.

Gruß von Luschi
aus klein-Paris

PS: Ausreden wie: Betriebsdaten-streng geheim werden anerkannt, aber es gibt vielfältige Möglichkeiten, Daten zu anonymisieren.
Schließlich ist das hier kein Philosophie-Seminar!
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 10:26   #8
buddboy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Recht hast du . Hab die Datei anonymisiert und überflüssige Bestandteile gelöscht. Das Modul enthält das Makro. Aktuell habe ich dort nen anderen Versuch als den hier beschriebenen aber drin. Funktioniert aber auch nicht.

Freue mich auf Feedback
Angehängte Dateien
Dateityp: xlsm ms-office-forum.xlsm (41,6 KB, 1x aufgerufen)
buddboy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 10:46   #9
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Moin

Probier mal

Code:

Sub CreatePivot()

    If Application.ReferenceStyle = xlR1C1 Then
        Application.ReferenceStyle = xlA1
        Schreibweise = "Z1S1"
    Else
    End If


    With Worksheets("D-Orders")
        Set Quelle = .ListObjects("Orders")
            
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                SourceData:=Quelle, _
                Version:=xlPivotTableVersion14).CreatePivotTable _
                TableDestination:=Worksheets("P-Orders").Range("A1"), _
                TableName:="PivotTable1", _
                DefaultVersion:=xlPivotTableVersion14
            
                
        With ActiveSheet.PivotTables("PivotTable1").PivotFields("Purchase Date")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("PivotTable1")
            .AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("Quantity"), "Summe von Quantity", xlSum
        End With
        
        Sheets("P-Orders").Cells(1, 1).Select
    End With

End Sub

Mit SuperIngo ist das Problem auch schon einmal aufgetreten und da lag es an der R1C1 Schreibweise .. daher die Anpassung


Grüße Jack

Geändert von jack_D (22.02.2018 um 10:49 Uhr).
jack_D ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 12:18   #10
buddboy
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hey Jack,
nun klappts!

hab lediglich folgenden Code genommen

Code:

    With Worksheets("D-Orders")
        Set Quelle = .ListObjects("Orders")
            
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                SourceData:=Quelle, _
                Version:=xlPivotTableVersion14).CreatePivotTable _
                TableDestination:=Worksheets("P-Orders").Range("A1"), _
                TableName:="PivotOrders", _
                DefaultVersion:=xlPivotTableVersion14
    End With

Sheets("P-Orders").Select
With ActiveSheet.PivotTables("PivotOrders").PivotFields("Date")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotOrders").AddDataField ActiveSheet.PivotTables( _
        "PivotOrders").PivotFields("Quantity"), "Summe von Quantity", xlSum

Sheets("Übersicht").Select
set Quelle hat also meiner Meinung nach das Problem gelöst.

Tausend Dank und frohes Schaffen weiterhin
buddboy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.02.2018, 13:27   #11
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Super.

Danke für die Rückmeldung!
jack_D ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.