Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

PivotTables.Add in unsichtbarem Worksheet möglich?

PivotTables.Add in unsichtbarem Worksheet möglich?
28.08.2019 17:46:26
Zacharias
Hallo liebe Exelianer,
ich komme bei folgender Frage nicht weiter:
Ich erzeuge zur Laufzeit Pivottabellen in einem Blatt 'PT_Sourcedata' als Grundlage für frei in anderen Blättern erzeugte Charts.
Das tue ich mit folgender Anweisung:

Set PtTable = wksPT_Target.PivotTables.Add(PivotCache:=ptCache, TableDestination:=rngPT_Target,  _
TableName:=strPT_Name)

So weit so gut.
Nun möchte ich aber das Blatt 'PT_Sourcedata' mit .visible = xlVeryHidden immer versteckt halten und bei versteckem Blatt bekomme ich Laufzeitfehler 1004.
Nun könnte ich mir damit behelfen, das Blatt direkt vor der .add-Anweisung einmal sichtbar zu machen, hoffe aber dennoch auf eine bessere Lösung.
Vielen Dank vorab für jeden hilfreichen Hinweis!
Viele Grüße
Zacharias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PivotTables.Add in unsichtbarem Worksheet möglich?
29.08.2019 14:51:50
fcs
Hallo Zacharias,
grundsätzlich sollte das anlegen eines Pivotberichtes in einem ausgeblendeten Blatt funktionieren.
Du musst beachten:
1. In deinem Code dürfen keine Select-Anweisungen vorkommen, die auf Objekte (Zellen etc) in dem ausgeblendeten Blatt zugreifen.
2. An der Position (Zelle) an der der Pivot-Bericht eingefügt werden soll darf kein alter Pivotbericht vorhanden sein.
LG
Franz
Funktionierender Beispiel-Code:
Sub MakePivotTab()
Dim wksPT_Target As Worksheet
Dim ptCache As PivotCache
Dim strPT_Name As String
Dim rngPT_Target As Range
Dim ptTable As PivotTable
Dim wksData As Worksheet
'Pivot-Cache anlegen
Set wksData = ActiveWorkbook.Worksheets("Data")
With wksData
Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, .Range("A1:D14"))
End With
'Blatt und Ziel für Pivotbericht setzen
Set wksPT_Target = ActiveWorkbook.Worksheets("PT_Sourcedata")
Set rngPT_Target = wksPT_Target.Range("A5")
strPT_Name = "Auswertung01"
'Pivotbericht anlegen
Set ptTable = wksPT_Target.PivotTables.Add(PivotCache:=ptCache, TableDestination:= _
rngPT_Target, _
TableName:=strPT_Name)
'Pivotbericht aufbauen
With ptTable
.RowAxisLayout xlTabularRow
With .PivotFields("A")
.Orientation = xlRowField
.Position = 1
End With
With .PivotFields("B")
.Orientation = xlColumnField
.Position = 1
End With
.AddDataField .PivotFields("C"), "Summe von C", xlSum
.AddDataField .PivotFields("D"), "Summe von D", xlSum
With .DataPivotField
.Orientation = xlRowField
.Position = 2
End With
End With
End Sub

Anzeige
AW: PivotTables.Add in unsichtbarem Worksheet möglich?
29.08.2019 20:10:59
Zacharias
Hallo Franz,
Danke für die Rückmeldung, sorry, daß ich mich erst jetzt melde, aber gestern hatte ich schon "Feierabend" gemacht und heute mußte ich die Kinder bespaßen.
Eine Frage zu Deiner Antwort:
Hast Du in Deinem Bsp. das Sheet wksPT_Target selbst einmal vor dem PivotTables.add mit .visible = xlVeryHidden ausgeblendet, denn bei mir klappt es definitiv nicht, wenn das Blatt ausgeblendet ist.
Mit vorherigem Einblenden und anschließendem wieder Ausblenden hingegen klappt es:
Set ptCache = ThisWorkbook.PivotCaches.Add(SourceType:=PT_SourceType, SourceData:= _
rngPT_SourceData.Address(External:=True, ReferenceStyle:=xlR1C1))
With wksPT_Target
.Visible = xlSheetVisible
Set PtTable = .PivotTables.Add(PivotCache:=ptCache, TableDestination:=rngPT_Target,  _
TableName:=strPT_Name)
.Visible = xlSheetVeryHidden
End With

Ich wollte eigentlich vermeiden, daß Blatt einzublenden, wenn es aber gar nicht anders funktioniert, werde ich eben zusätzlich screenupdating abschalten, damit es niemand mitbekommt ; - )
Danke trotzdem schonmal.
Viele Grüße
Zacharias
PS.: Meine Eingangsfrage: Es sollte natürlich Excelianier heißen ;- )
PPS: Pivottabellen/-charts zur Laufzeit löschen und wieder anlegen, mache ich seit vielen Jahren und alle evtl. Problemchen die sich hierbei oder anderen Fragen in den letzten fast 20 Jahren bzgl. Excel und VBA ergeben hatten, wurden Dank Euch (meist hier bei herber.de) immer gelöst - Dafür nochmal Danke - Klasse das Forum und die Leute hier!
Anzeige
AW: PivotTables.Add in unsichtbarem Worksheet möglich?
30.08.2019 14:05:28
fcs
Hallo Zacharias,
hier meine Beispieldatei.
https://www.herber.de/bbs/user/131743.xlsm
Bei mir funktioniert die Erstellung des Pivotberichtes auch bei ausgeblendetem Blatt.
Falls im Blatt schon ein Pivotbericht vorhanden ist, dann wird dieser vor der Erstellung des Berichts gelöscht.
LG
Franz
AW: PivotTables.Add in unsichtbarem Worksheet möglich?
31.08.2019 13:39:19
Zacharias
Hallo Franz,
Danke für die Rückmeldung und vielen Dank für die Beispieldatei!
Ich habe Deine Datei laufen lassen, da funktioniert es einwandfrei.
Bei meiner leider noch nicht.
Ich werde am Montag nochmal nachschauen, ob der PivotChache und die PivotTabelle vorher auch wirklich korrekt gelöscht werden (bei mir).
Heute komme ich leider nicht mehr dazu - Familienfeier.
Danke nochmal
Zacharias
Anzeige
AW: PivotTables.Add in unsichtbarem Worksheet möglich?
31.08.2019 17:54:34
Hajo_Zi
Hallo Zacharias,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?
Das ist nur meine Meinung zu dem Thema.

AW: PivotTables.Add in unsichtbarem Worksheet möglich?
02.09.2019 11:52:17
Zacharias
Hallo Franz,
ich hab's probiert und bekomme es nicht hin, daß er die PT bei ausgeblendetem Zielblatt erzeugt.
Warum es in Deiner Datei funktioniert und bei mir nicht ist mir ein Rätsel.
Da ich gerade etwas Zeitdruck mit der Fertigstellung des Tools habe, behelfe ich mir erstmal mit temporärem Einblenden.

With wksPT_Target
intWksVisible = wksPT_Target.Visible
booScreenupdating = Application.ScreenUpdating
.Visible = xlSheetVisible
Set PtTable = .PivotTables.Add(PivotCache:=ptCache, TableDestination:=rngPT_Target,  _
TableName:=strPT_Name)
.Visible = intWksVisible
Application.ScreenUpdating = booScreenupdating
End With
Ich werde das bei Gelegenheit mal versuchen nachzuvollziehen.
Bis hierher bedanke ich mich ersteinmal für Deine Hilfe.
Viele Grüße
Zacharias
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige