1.1k Aufrufe
Gefragt in Tabellenkalkulation von mamamia Mitglied (348 Punkte)
Hallo,
ich hoffe, es kann mir jemand weiterhelfen. Ich habe eine Pivottabelle und sollte diese in einem anderen Laufwerk den Mitarbeitern nur zur Ansicht zur Verfügung stellen. Nun habe ich es mit einer Verknüpfung versucht, aber die Tabelle im 2. Laufwerk lässt sich nicht aktualisieren. Die Daten und weitere Berechnungen in meinem Ordner dürfen für die Mitarbeiter nicht ersichtlich sein.
Zurzeit habe ich von den Daten 2 gleiche Pivottabellen in unterschiedlichen Laufwerken und jede muss ich aktualisieren, dass ist etwas aufwändig. Vielleicht hat jemand eine Lösung.
Danke!

MamaMia

13 Antworten

0 Punkte
Beantwortet von
Hallo Frank,

du könntest z.B. ein Makro hinterlegen, das beim Speichern, deine
Pivottabelle in die andere Datei kopiert.

Das folgende Makro gehört in das Modul "Diese Arbeitsmappe" und
überschreibt einfach die andere Datei.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As
Boolean, Cancel As Boolean)

Pivotblatt = "MeinePivottabelle"
Zieldatei = "E:\Zielpfad\Pivotview.xls"

With ThisWorkbook.Sheets(Pivotblatt).PivotTables(1)
.RefreshTable
.EnableDrilldown = False
.SaveData = False
End With

Application.EnableEvents = False: Application.DisplayAlerts = False
ThisWorkbook.Sheets(Pivotblatt).Copy
ActiveWorkbook.SaveAs Filename:=Zieldatei, FileFormat:=xlNormal
ActiveWorkbook.Close
Application.EnableEvents = True: Application.DisplayAlerts = True

With ThisWorkbook.Sheets(Pivotblatt).PivotTables(1)
.EnableDrilldown = True
.SaveData = True
End With

End Sub
Die Namen für Zieldatei und Pivotblatt musst du natürlich
noch anpassen. Sollten sich in der Zieldatei weitere Daten befinden,
die nicht überschrieben werden sollen, muss das Makro nochmal
leicht angepasst werden. Melde dich dazu einfach nochmal.
0 Punkte
Beantwortet von
Ich vergaß: Wenn du Excel 2007 oder höher hast, musst du deine
Basisdatei mit dem Makro zuvor natürlich als .xlsm speichern

Gruß Mr. K.
0 Punkte
Beantwortet von mamamia Mitglied (348 Punkte)
Hallo Mr. K.,
vielen Dank für das Makro. Es ist mein erster Versuch ein Makro aufzuzeichnen, aber ich erhalte immer den Fehler
"Fehler beim Kompilieren: Syntaxfehler" und es ist
Boolean, Cancel As Boolean) blau markiert.
Wahrscheinlich mach ich etwas falsch, aber es wäre super, wenn ich das hinkriegen würde.

Viele Grüße
MamaMia
0 Punkte
Beantwortet von
Hallo Frank,

du machst nichts falsch. Das hab ich leider nur nicht gesehen, dass
der Browser hier schon wieder einen Zeilenumbruch gemacht hat, wo
keiner hingehört. Das Boolean, Cancel As Boolean) gehört hinter
die erste Zeile. Getrennt durch ein Leerzeichen.

Probiers bitte nochmal und sag Bescheid, falls weitere Fehler
kommen. Bei mir funktionierts mal wieder einwandfrei. Es ist aber
natürlich immer möglich dass es systembedingte Unterschiede gibt.
0 Punkte
Beantwortet von mamamia Mitglied (348 Punkte)
Hallo xlKing,

es erscheint wieder ein Fehler: Fehler beim Kompilieren "End Sub erwartet"
Ich habe Excel 2007, habe das Makro SAPFS genannt und das Pivotblatt heißt TestFS, übertragen sollte es in Laufwerk "G":\ Testfortschritt.xls werden
Bitte guck mal die Formel durch, was nicht passt.

Sub SAPFS()
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Pivotblatt = "TestFS"
Zieldatei = "G:\Testfortschritt.xls"

With ThisWorkbook.Sheets(TestFS).PivotTables(1)
.RefreshTable
.EnableDrilldown = False
.SaveData = False
End With

Application.EnableEvents = False: Application.DisplayAlerts = False
ThisWorkbook.Sheets(TestFS).Copy
ActiveWorkbook.SaveAs Filename:=Testfortschritt, FileFormat:=xlNormal
ActiveWorkbook.Close
Application.EnableEvents = True: Application.DisplayAlerts = True

With ThisWorkbook.Sheets(TestFS).PivotTables(1)
.EnableDrilldown = True
.SaveData = True
End With

End Sub

Vielen Dank!
MamaMia
0 Punkte
Beantwortet von
Hallo Frank,

du kannst dieses spezielle Makro nicht einfach umbenennen, da es
sich hier nicht um ein übliches Makro handelt, das du manuell
startest, sondern um ein Ereignis, das ausgelöst wird, sobald du
die Änderungen an deinen Daten speicherst. Entferne also bitte die
Zeile Sub SAPFS() wieder aus deinem Code.

Solltest du auf diesem Namen bestehen, musst du stattdessen die
andere Sub-Zeile entfernen. Dann müsstest du das Makro aber
wieder jedesmal von Hand ausführen. Ich hatte dich in der obigen
Frage so verstanden, dass du genau das aber nicht willst, weil man
die manuelle Aktualiserung nach Datenänderung auch mal
vergessen kann.

Außerdem hast du leider zu viele Namen geändert. Deine
Namensanpassungen solltest du nur hier machen

Pivotblatt = "TestFS"
Zieldatei = "G:\Testfortschritt.xls"

Mein Fehler: Hätt' ich kommentieren sollen. Manchmal bin ich etwas
betriebsblind und denke nicht daran, dass es da draußen noch
Leute gibt, die nicht wissen, dass Makros auch mit Variablen
arbeiten können.

Der Text "TestFS" und der Name der Zieldatei werden hier also in
Variablen geschrieben. Die Variablen werden vom weiteren Code
ausgelesen und der korrekte Inhalt verarbeitet. Es ist also nicht
nötig, das in jeder Zeile anzupassen. Mach also deine Eingaben
zwischen den Klammern hinter Sheets und hinter dem
Gleichheitszeichen von Filename bitte wieder rückgängig.

Falls es doch mal nötig sein sollte, hier Anpassungen
vorzunehmen, musst du die exakt so angeben, wie du es oben bei
den Variablen gemacht hast. Also in Anführungszeichen
eingeschlossen. Aber wie gesagt, eigentlich nicht nötig.

Gruß Mr. K.
0 Punkte
Beantwortet von
Unter Excel 2007 müsste deine Zieldatei eigentlich auf .xlsx enden. Ich
weiß leider nicht, ob dann das verwendete Fileformat xlNormal bei
SaveAs noch korrekt ist. Kann auch xlWorkbookNormal oder irgendwie
anders lauten. Das kann ich leider grad nicht testen, da ich im Moment
keinen Zugriff auf diese Excel-Version habe. Ich denke aber nicht, dass
es an dieser Stelle Probleme gibt. Falls doch, sag einfach Bescheid
oder versuchs mal mit Weglassen dieses zusätzlichen Parameters.

PS: Wenn jemand hier zufällig weiß, wie das korrekte Fileformat für
.xlsx-Dateien lautet. Bitte melden.
0 Punkte
Beantwortet von mamamia Mitglied (348 Punkte)
Hallo Mr. K.
das Makro ist eingefügt, ohne Fehlermeldung, aber bei Änderung der Pivotabelle wird in die Zieldatei nichts automatisch übertragen. Ich habe es auch probiert mit Fileformat xlWorkbookNormal, ohne Erfolg.
Ist das ok, dass die Zieldatei die gleiche Datenquelle wie mein Pivotblatt hat? Ich habe mein Pivotblatt kopiert und in das Laufwerk "G" verschoben.

Viele Grüße
MamaMia
0 Punkte
Beantwortet von
Hallo Frank,

Hab nochmal ein wenig recherchiert. Probiers mal mit Fileformat:=
xlOpenXMLWorkbook für die xlsx-Datei.

Mr. K.
0 Punkte
Beantwortet von
Wie gesagt, ich konnte es nicht testen, aber auf die Idee einfach mal zu
googeln, bin ich leider erst jetzt gekommen. Wen's interessiert. Hier
sind typische Fileformate:
www.rondebruin.nl/win/s5/win001.htm

Zu deiner Frage: Ja, das ist OK, bzw. absolut kein Problem. Vielleicht
mal zur Erklärung: Das Makro trennt nach Datenaktualisierung die
Pivottabelle von der Datenquelle mit der Zeile .SaveData = False.
Zusätzlich wird mit der Zeile .EnableDrilldown = False verhindert,
dass man über Doppelklick in den Wertebereich der Pivottabelle
hintenrum Einsicht in die Basisdaten erhalten kann. Erst dann wird das
Tabellenblatt in dem sich die Pivottabelle befindet in eine neue Excel-
Datei kopiert und diese unter dem gewünschten Namen gespeichert.
Diese neue Datei könntest du jetzt auch problemlos per Email
verschicken, ohne dass der Empfänger deine Daten sehen kann.
Danach wird in der Ursprungsdatei die Verknüpfung zu den Daten
wieder hergestellt. All das passiert sobald du deine Änderungen
speicherst.
...