Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
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 Datenquelle Bezug ändern

Pivot Datenquelle Bezug ändern
21.04.2021 10:39:00
Giuppy
Hallo zusammen,
ich möchte mehrere Pivot-Tabellen in eine neue Datei kopieren.
Die Datenquellen Bezug soll nicht auf der alten Tabelle sein.
z.B. nicht '\#STATISTIKEN\Rückstandsliste\[Rückstandsliste.xlsb]Rückstandsliste'!$A$5:$AD$5964
aber Rückstandsliste'!$A$5:$AD$5964 sein.
Mit folgende VBA leider funktioniert nicht

Sub CopyRück_TEST()
Application.ScreenUpdating = False
ClearClipboard = True 'Excelinternen Zwischenspeicher löschen
ActiveWorkbook.Save
Dim varFileLog As Variant
Dim intKlammer As Integer
Dim pvtTabelle As PivotTable
Dim strPfad As String
Dim strSource As String
Dim wkbQuelle As Workbook
Dim wkbZiel As Workbook
Dim wksBlatt As Worksheet
varFileLog = "Rück_" & Format(Now, "YYYY.MM.DD hhmmss") & ".xlsx"
Set wkbQuelle = Workbooks("Rückstandsliste.xlsb")
strPfad = wkbQuelle.Path & "\"
wkbQuelle.Sheets(Array("Rückstandsliste", "Pivot", "Oberhaching", "Kunden Pos", "Kunden")).Copy
Set wkbZiel = ActiveWorkbook
Application.DisplayAlerts = False
wkbZiel.SaveAs Filename:=strPfad & varFileLog
Application.DisplayAlerts = False
For Each wksBlatt In wkbZiel.Worksheets
For Each pvtTabelle In wksBlatt.PivotTables
MsgBox pvtTabelle.SourceData
strSource = pvtTabelle.SourceData
If Left(strSource, 1) = "[" Then
intKlammer = InStr(1, strSource, "]", vbTextCompare)
strSource = Mid(strSource, intKlammer + 1)
pvtTabelle.SourceData = strSource
End If
Next pvtTabelle
Next wksBlatt
ActiveWindow.Close
End Sub
kann mir jemand helfen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot Datenquelle Bezug ändern
23.04.2021 21:33:30
Yal
Hallo Guippy,
Nochmal speichern nicht vergessen. Der nicht gespeicherte Zustand wird wahrscheinlich durch "DisplayAlert = False" unterdruckt.
Klugschiesser-Modus:an
pvtTabelle.SourceData = Split(pvtTabelle.SourceData, "]")(UBound(Split(pvtTabelle.SourceData, "]")))
Klugscheisser-Modus:aus
VG
Yal
Pivot Datenquelle Bezug ändern
26.04.2021 11:54:49
Giuppy
Hallo Yal,
vielen Dank,
leider funktioniert ohne DisplayAlert nicht
habe ich den Code pvtTabelle.SourceData = Split(pvtTabelle.SourceData, "]")(UBound(Split(pvtTabelle.SourceData, "]"))) an die falsche Stelle platziert?
eigentlich beim MsgBox sollte Rückstandsliste!Z5S1:Z5874S30 und nicht
'\#Statistiken\Rückstandsliste\[Rückstansliste.xlsb]Rückstandsliste'!Z5S1:Z5874S30

Sub CopyRück_TEST()
Application.ScreenUpdating = False
ClearClipboard = True 'Excelinternen Zwischenspeicher löschen
ActiveWorkbook.Save
Dim varFileLog As Variant
Dim intKlammer As Integer
Dim pvtTabelle As PivotTable
Dim strPfad As String
Dim strSource As String
Dim wkbQuelle As Workbook
Dim wkbZiel As Workbook
Dim wksBlatt As Worksheet
varFileLog = "Rück_" & Format(Now, "YYYY.MM.DD hhmmss") & ".xlsx"
Set wkbQuelle = Workbooks("Rückstandsliste.xlsb")
strPfad = wkbQuelle.Path & "\"
wkbQuelle.Sheets(Array("Rückstandsliste", "Pivot", "Oberhaching", "Kunden Pos", "Kunden")).Copy
Set wkbZiel = ActiveWorkbook
'Application.DisplayAlerts = False
wkbZiel.SaveAs Filename:=strPfad & varFileLog
'Application.DisplayAlerts = False
For Each wksBlatt In wkbZiel.Worksheets
For Each pvtTabelle In wksBlatt.PivotTables
MsgBox pvtTabelle.SourceData
strSource = pvtTabelle.SourceData
If Left(strSource, 1) = "[" Then
intKlammer = InStr(1, strSource, "]", vbTextCompare)
strSource = Mid(strSource, intKlammer + 1)
pvtTabelle.SourceData = Split(pvtTabelle.SourceData, "]")(UBound(Split(pvtTabelle.SourceData, "]")))
'pvtTabelle.SourceData = strSource
End If
Next pvtTabelle
Next wksBlatt
'Application.DisplayAlerts = False
'ActiveWindow.Close
End Sub

Anzeige
AW: Pivot Datenquelle Bezug ändern
26.04.2021 15:31:19
Yal
Hallo Guippy,
nein, Du hast es an der richtige Stelle platziert.
Nur dein Msgbox sollte nach der Verarbeitung das Ergebnis herausgeben.
Ich stelle gerade fest, dass der Paket Dateiname+Blattname mit eine Hochkomma umgeklammert ist. Durch den Split verschwindet die einführende Hochkomma. Diese muss man wieder eingeben
ungefähr so:

For Each wksBlatt In wkbZiel.Worksheets
For Each pvtTabelle In wksBlatt.PivotTables
strSource = pvtTabelle.SourceData
pvtTabelle.SourceData = "'" & Split(pvtTabelle.SourceData, "]")(UBound(Split(pvtTabelle.SourceData, "]")))
MsgBox "Alt: " & vbTab & strSource & vbCr & "Neu: " & pvtTabelle.SourceData
Next pvtTabelle
Next wksBlatt
Im Kopf-Bereich der Sub gibt es noch ein DisplayAlerts. Im allgemein ist Code vor der Variablen-Deklaration zu vermeiden.
Das Problem ist nicht das DisplayAlerts selbst, sondern weil "DisplayAlerts = False" eingestellt ist, die Frage, ob die Datei gespeichert werden soll, unterdruckt wird und die Datei ohne weiteres geschlossen wird. Am Ende soll noch einem

wkbZiel.Close SaveChanges:=True
stattfinden.
VG
Yal
Anzeige
Pivot Datenquelle Bezug ändern
27.04.2021 12:59:47
Giuppy
Hallo YAL,
es funktioniert :-)
molte grazie
VG
Giuppy

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige