Mehrsprachige Pivot Tabellen

Hallo Wissende,

ich habe ein Tabellenblatt mit Daten.
Daraus wird dann per Vba eine Pivottabelle erstellt.
Jetzt sollen aber, nachdem man eine von mehreren Sprachen ausgewählt hat, alle Spalten-Titel halt in der anderen Sprache erscheinen.

Grundsätzlich wird da per Vba folgender Weg beschritten.
Die Mappe/tabelle mit den Rohdaten wird geöffnet, daraus werden bestimmte Spalten extrahiert und in die basistabelle für die Pivottabelle überführt.

Daraus wird dann die PT erstellt. Alles per Vba.

Nun soll das z.B. in Englisch geschehen.

Da dies meine erste PT ist an der ich mich austoben soll weiß ich vieles nicht :frowning:

Derzeit habe ich das so gelöst, anfangs des Codes kommt eine Abfrage, welche der (derzeit 6) Sprachen es denn sein soll mit Optionsbutton auf einer UF.
Daraufhin wird dann die Datentabelle der PT in Deutsch erstellt, dann die deutschen Spaltentitel durch die fremsprachlichen ersetzt, dann (aber soweit bin ich noch gar nicht), soll dann daraus die PT erstellt werden.

Meine Frage ist nun, ist es möglich anders vorzugehen?
D.h. ich erstelle die PT, danach kann man die Sprache wählen und daraufhin wird das nur in der PT geändert, ggfs. auch gleichzeitig bzw. vorher in der Datentabelle für die PT und die PT wird „refreshed“?

Sicher, hätte ich überhaupt Ahnung von PTs so hätte ich nicht gefragt sondern kurz selbst getestet, aber mir fehlt noch völlig das „overlookking“ über so eine PT.

PS: @Thomas, wie ist das nun mit diesem Kompatibilkitätsmodus für ältere Excelversionen.
Was genau geschieht wenn eine xlsx ankommt, die bei z.B. bed. Formatierung grüne, gelbe rote Pfeile einsetzt, wie wird das in älteren Versionen behandelt?

Diesen Kompatibilätsmodus wollte ich schon letztens installieren, irgendwas ging schief, weiß nicht mehr was, muß es nochmal probieren.

Danke ^ Gruß
Reinhard

Hallo Reinhard.

Von Pivot-Tabellen habe ich zwar keine Ahnung, aber die Sprachen würde ich folgendermaßen behandeln:

Deklaration eines benutzerdefinierten Typs. Würde prinzipiell dann so aussehen:

Public Type typSprache
 SpaltenTitel1 As String
 SpaltenTitel2 As String
 SpaltenTitel3 As String
 SpaltenTitel4 As String
 SpaltenTitel5 As String
End Type

Public Type typSprachDaten
 Namen() As String
 Sprachen() As typSprache
End Type

Public SprachDaten As typSprachDaten

Public Sub SprachenEinlesen()

'Lokale Variablen

 Dim SprachenDatei As Long

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

 On Error GoTo ErrHandler
 SprachenDatei = FileLen("C:\WINDOWS\Sprachen.dat") 'Löst einen Fehler aus, wenn die Datei noch nicht existiert
 SprachenDatei = FreeFile
 Open "C:\WINDOWS\Sprachen.dat" For Binary As SprachenDatei
 Get SprachenDatei, , SprachDaten
 Close SprachenDatei

Ende:

 'Code
 Exit Sub

ErrHandler:

 Call SprachenInitialisieren
 Call SprachenSpeichern
 Resume Ende


End Sub

Public Sub SprachenSpeichern()

'Lokale Variablen

 Dim SprachenDatei As Long

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

 On Error GoTo ErrHandler
 SprachenDatei = FreeFile
 Open "C:\WINDOWS\Sprachen.dat" For Output As SprachenDatei
 Close SprachenDatei
 Open "C:\WINDOWS\Sprachen.dat" For Binary As SprachenDatei
 Put SprachenDatei, , SprachDaten
 Close SprachenDatei

Ende:

 Exit Sub

ErrHandler:

 MsgBox "Fehler beim Schreiben der Datei ''C:\WINDOWS\Sprachen.dat''", vbCritical, "Der Vorgang wurde abgebrochen"
 Resume Ende

End Sub

Public Sub SprachenInitialisieren()

 With SprachDaten
 ReDim .Namen(0 To 5)
 ReDim .Sprachen(0 To 5)

 .Namen(0) = "Sprache1"
 .Namen(1) = "Sprache2"
 .Namen(2) = "Sprache3"
 .Namen(3) = "Sprache4"
 .Namen(4) = "Sprache5"
 .Namen(5) = "Sprache6"

 With Sprachen(0)
 .SpaltenTitel1 = "Spalte1\_Sprache1"
 .SpaltenTitel2 = "Spalte2\_Sprache1"
 .SpaltenTitel3 = "Spalte3\_Sprache1"
 .SpaltenTitel4 = "Spalte4\_Sprache1"
 .SpaltenTitel5 = "Spalte5\_Sprache1"
 End With
 With Sprachen(1)
 .SpaltenTitel1 = "Spalte1\_Sprache2"
 .SpaltenTitel2 = "Spalte2\_Sprache2"
 .SpaltenTitel3 = "Spalte3\_Sprache2"
 .SpaltenTitel4 = "Spalte4\_Sprache2"
 .SpaltenTitel5 = "Spalte5\_Sprache2"
 End With
 With Sprachen(2)
 .SpaltenTitel1 = "Spalte1\_Sprache3"
 .SpaltenTitel2 = "Spalte2\_Sprache3"
 .SpaltenTitel3 = "Spalte3\_Sprache3"
 .SpaltenTitel4 = "Spalte4\_Sprache3"
 .SpaltenTitel5 = "Spalte5\_Sprache3"
 End With
 With Sprachen(3)
 .SpaltenTitel1 = "Spalte1\_Sprache4"
 .SpaltenTitel2 = "Spalte2\_Sprache4"
 .SpaltenTitel3 = "Spalte3\_Sprache4"
 .SpaltenTitel4 = "Spalte4\_Sprache4"
 .SpaltenTitel5 = "Spalte5\_Sprache4"
 End With
 With Sprachen(4)
 .SpaltenTitel1 = "Spalte1\_Sprache5"
 .SpaltenTitel2 = "Spalte2\_Sprache5"
 .SpaltenTitel3 = "Spalte3\_Sprache5"
 .SpaltenTitel4 = "Spalte4\_Sprache5"
 .SpaltenTitel5 = "Spalte5\_Sprache5"
 End With
 With Sprachen(5)
 .SpaltenTitel1 = "Spalte1\_Sprache6"
 .SpaltenTitel2 = "Spalte2\_Sprache6"
 .SpaltenTitel3 = "Spalte3\_Sprache6"
 .SpaltenTitel4 = "Spalte4\_Sprache6"
 .SpaltenTitel5 = "Spalte5\_Sprache6"
 End With
 End With
End Sub

Einen benutzerdefinierten Typ kannst Du (wenn ich micht recht erinnere), genau wie ein Array, auf Schlag mit „Put“ in eine Binär-Datei schreiben und speichern.

Kannst ja 'mal ausprobieren

VG
Carsten

Hallo Carsten,

Von Pivot-Tabellen habe ich zwar keine Ahnung,

dann bist du für mich unbrauchbar.

-)), ich doch auch nicht, wer brauch das Zeugs schon, ich nicht *lächel*

Aber jetzt habe ich halt so eine PT am Hals und mein Stolz läßt es nicht zu, daß diese PTs so einfach sein sollen und ich komm nicht klar damit.

Und selbstverständlich habe ich da größte Schwierigkeiten, da in Vba etwas zu basteln mit PTs, wo ich nicht weiß wie man das manuell in Excel macht.

Ich nehme an ich hab mich wiedermal unklar ausgedrückt.
Ich habe eine Mappe. Diese ruft via Vba die Rohdaten-Mappe auf, batselt dann daraus die Datentabelle für die daraus gebildete PT.

Die je nach Sprache verschiedenen Spaltentitel stehen in einem Hilfsblatt der ersten Mappe.
Die kann ich bequem mit Sverweis/vlookup auslesen und einfügen.

Ich brauche also keine Abspeicherung in einer Textdatei.

Ich will nur wissen, muß ich, was schon klappt, erst sagen, bilde mir einje französische Datenquelle für die PT, dann wird daraus eine französisch betitelte PT erstellt, oder kann ich sagen, bau mir eine PT, wenn die steht, wähle ich dann die sprache.

Das ist das was ich wissen möchte.

Selbstverständlich schaue ich mir deinen Code genauer an, beim ersten Überflug sah ich leider nichts was mir in meiner Frage weiterhilft.

Und, ich weiß jetzt auch woher meine Abneigung gegen PTs herrührt.
Ich mag es, wenn ich Word öffne oder Excel und hab ein leeres Blatt, Dokument vor mir.

Öffne ich Powerpoint o.ä. sehe ich da nur irgendwelche Felder wo ich was eintargen soll.
Passt mir micht.

Genauso bei PT-Erstellung, da soll ich irgendwas von rechts mit Drag und Drop reinplumsen lassen. Sicher einfach, ich mag das nicht.
Und wenn ich da in so einer PT reinklicke dann erschrecke ich wenn da flugs so ein blödes Fenster aufgeht.
Ich möchte bestimmen ob und wann dieses Fenster kommt.

Aber okay, andere mögen das gutheißen. Ist meine erste PT, genauer, die erste PT um die ich mich kümmern muß.

Gruß
Reinhard

Hallo Reinhard.

Die je nach Sprache verschiedenen Spaltentitel stehen in einem
Hilfsblatt der ersten Mappe.

Dann sind die also quasi schon gespeichert.

Die kann ich bequem mit Sverweis/vlookup auslesen und
einfügen.

Ok.

Ich brauche also keine Abspeicherung in einer Textdatei.

Wäre aber universeller einzusetzen (glaub). Wenn Du in Deiner UF statt OptionButtons eine Listbox verwendest, könntest Du einfach mit dem ListIndex auf die ausgewählte Sprache verweisen.

Ich will nur wissen, muß ich, was schon klappt, erst sagen,
bilde mir einje französische Datenquelle für die PT, dann wird
daraus eine französisch betitelte PT erstellt, oder kann ich
sagen, bau mir eine PT, wenn die steht, wähle ich dann die
sprache.

IMO sollte man erst die PT bilden und dann die Sprache wählen. Hätte zumindest den Vorteil, dass man die Sprache bei Bedarf „schnell 'mal“ umschalten kann, ohne dass die PT erst neu gebildet werden muß.

Ich mag es, wenn ich Word öffne oder Excel und hab ein leeres
Blatt, Dokument vor mir.

Geht mir auch so.

VG
Carsten

Grüezi Reinhard

Daraus wird dann per Vba eine Pivottabelle erstellt.

Es gibt Leute, die wollen alles immer über VBA-Programmierung lösen - warum um alles in der Welt ist das so…? :wink:

Jetzt sollen aber, nachdem man eine von mehreren Sprachen
ausgewählt hat, alle Spalten-Titel halt in der anderen Sprache
erscheinen.

Grundsätzlich wird da per Vba folgender Weg beschritten.
Die Mappe/tabelle mit den Rohdaten wird geöffnet, daraus
werden bestimmte Spalten extrahiert und in die basistabelle
für die Pivottabelle überführt.

OK, bis hierhin passt noch alles…

Derzeit habe ich das so gelöst, anfangs des Codes kommt eine
Abfrage, welche der (derzeit 6) Sprachen es denn sein soll mit
Optionsbutton auf einer UF.
Daraufhin wird dann die Datentabelle der PT in Deutsch
erstellt, dann die deutschen Spaltentitel durch die
fremsprachlichen ersetzt, dann (aber soweit bin ich noch gar
nicht), soll dann daraus die PT erstellt werden.

Meine Frage ist nun, ist es möglich anders vorzugehen?
D.h. ich erstelle die PT, danach kann man die Sprache wählen
und daraufhin wird das nur in der PT geändert, ggfs. auch
gleichzeitig bzw. vorher in der Datentabelle für die PT und
die PT wird „refreshed“?

Nein, letzeres ist nicht machbar.
Die PT ist da sehr ‚heikel‘ - sie kann nicht erkennen was in den Spalten steht und einfach neue Daten übernehmen.
Insbesondere die Spaltentitel werden in der Auswertung dann zu Feldern, welche die Namen der Spaltenüberschriften tragen.
Nennt sich dann eine solche Überschrift anders, ist dies für die PT ein neues Feld. Dieses wird dann beim Aktualisieren der PT nicht angezeigt und muss neu in die PT reingebracht werden.

Heisst eine Spalte in Deutsch also ‚Hans‘ und ist als Feld in der PT vorhanden, wird dann auf Französisch zu ‚Jean‘ fliegt selbiges aus der PT raus (denn in der PT drin ist ja das Feld ‚Hans‘, das es faktisch nun nicht mehr gibt).

Daher läuft es darauf hinaus, dass nach dem Umstellen der Sprache die schon bestehende Pivot-Tabelle nach dem Aktualisieren leer sein wird.

Anders sieht es mit den Inhalten der Spalten aus - dort spielt es keine Rolle wie diese ändern, die PT wertet das dann sauber aus.

Daher würde ich versuchen, die PT einmal korrekt zu erstellen (nicht mit VBA sondern von Hand) und die Spaltenüberschriften nicht in eine andere Sprache umzustellen sondern vielleicht allgemein in Englisch zu beschriften.

PS: @Thomas, wie ist das nun mit diesem Kompatibilkitätsmodus
für ältere Excelversionen.
Was genau geschieht wenn eine xlsx ankommt, die bei z.B. bed.
Formatierung grüne, gelbe rote Pfeile einsetzt, wie wird das
in älteren Versionen behandelt?

Die werden entweder eingefroren, sind also in einer älteren Version nicht bearbeitbar, oder sie werden in die ähnlichst mögliche Farbe überführt.

Diesen Kompatibilätsmodus wollte ich schon letztens
installieren, irgendwas ging schief, weiß nicht mehr was, muß
es nochmal probieren.

Was willst Du da wo installieren?
Einfach das Paket bei MS herunterladen, einmal installieren und die älteren Versionen können auch die neuen Dateiendungen bearbeiten.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Thomas,

Daraus wird dann per Vba eine Pivottabelle erstellt.

Es gibt Leute, die wollen alles immer über VBA-Programmierung
lösen - warum um alles in der Welt ist das so…? :wink:

okay, okay, hast Recht, ich hätte es nur mit Vba ohne PT gelöst.
ABER, diesmal bin ich vollkommen unschuldig, die Vba-Vorgehensweise ist u.a. wegen den diversen Sprachen vorgegeben.

Derzeit habe ich das so gelöst, anfangs des Codes kommt eine
Abfrage, welche der (derzeit 6) Sprachen es denn sein soll mit
Optionsbutton auf einer UF.
Daraufhin wird dann die Datentabelle der PT in Deutsch
erstellt, dann die deutschen Spaltentitel durch die
fremsprachlichen ersetzt, dann (aber soweit bin ich noch gar
nicht), soll dann daraus die PT erstellt werden.

Meine Frage ist nun, ist es möglich anders vorzugehen?
D.h. ich erstelle die PT, danach kann man die Sprache wählen
und daraufhin wird das nur in der PT geändert, ggfs. auch
gleichzeitig bzw. vorher in der Datentabelle für die PT und
die PT wird „refreshed“?

Nein, letzeres ist nicht machbar.
Die PT ist da sehr ‚heikel‘ - sie kann nicht erkennen was in
den Spalten steht und einfach neue Daten übernehmen.

Aha, na gut, dann halt der „alte“ Weg. Hätte ja sein können daß sich die PT nicht die Spaltentitel merkt, sondern die Zelle wo sie steht/stehen, dann wäre es ja egal was da steht.

Daher läuft es darauf hinaus, dass nach dem Umstellen der
Sprache die schon bestehende Pivot-Tabelle nach dem
Aktualisieren leer sein wird.

Alles klar.

Anders sieht es mit den Inhalten der Spalten aus - dort spielt
es keine Rolle wie diese ändern, die PT wertet das dann sauber
aus.

Gut, dann ist so eine PT doch ein bisschen brauchbar :smile:

Daher würde ich versuchen, die PT einmal korrekt zu erstellen
(nicht mit VBA sondern von Hand)

Warum das? So wie ich das mitgekriegt habe sollen da fast 10 User das/ein makro starten. Wenn die alle manuell probioeren da eine Pt zu erstellen gibt es eine katastrophe seltsame PTs.

und die Spaltenüberschriften
nicht in eine andere Sprache umzustellen sondern vielleicht
allgemein in Englisch zu beschriften.

Und dann? Englisch für alle? Ist wohl nicht gewünscht. Geht ja auch um Spaltentitel die sehr fachbezogen sind, wie BuKr, das ist die deutsche Bezeichnung, auf Englisch heißt das dann CoCd.
Die von den ca. 10 Usern hier erstellten PTs gehen dann ins Ausland.

Und treffen da z.B. in England auf Leute die zwar fachlich was mit
CoCd anfangen können, aber nix mit BuKr.

PS: @Thomas, wie ist das nun mit diesem Kompatibilkitätsmodus
für ältere Excelversionen.

*hmmh* Kompatibilkitätsmodus ist sicher ein älterer Modus der nicht mehr bekannt ist, vielleicht heißt er inzwischen anders *gg*

Was genau geschieht wenn eine xlsx ankommt, die bei z.B. bed.
Formatierung grüne, gelbe rote Pfeile einsetzt, wie wird das
in älteren Versionen behandelt?

Die werden entweder eingefroren, sind also in einer älteren
Version nicht bearbeitbar, oder sie werden in die ähnlichst
mögliche Farbe überführt.

Aha, aus einem grünen Pfeil nach oben oder einem roten Pfeil nach unten wird dann quasi nix oder die Zelle wird grün/rot gefärbt?

Diesen Kompatibilätsmodus wollte ich schon letztens
installieren, irgendwas ging schief, weiß nicht mehr was, muß
es nochmal probieren.

Was willst Du da wo installieren?

Dieses Paket.

Einfach das Paket bei MS herunterladen, einmal installieren
und die älteren Versionen können auch die neuen Dateiendungen
bearbeiten.

Ja, irgendwas ging da bei mir schief. Ich melde mich nochmals bei dir wenn es auch im zweiten Anlauf nicht klappt, dann kann ich auch sagen wo es bei mir hakt.

Danke ^ Gruß
Reinhard

OT kompatibilitätspack office 2010

Diesen Kompatibilätsmodus wollte ich schon letztens
installieren, irgendwas ging schief, weiß nicht mehr was, muß
es nochmal probieren.

Was willst Du da wo installieren?
Einfach das Paket bei MS herunterladen, einmal installieren
und die älteren Versionen können auch die neuen Dateiendungen
bearbeiten.

Grüezi Thomas,

ich hab das Paket jetzt installiert, ist auch brav zu finden in der Systemsteuerung.
Nur, mein Excel 2000 erkennt immer noch keine xlsx-Formate.

Es kommt die Meldung unbekanntes Format und Excel bietet mir an das als Text einzulesen, naja gibt nur seltsame Zeichenwirrwarr im Blatt :frowning:

Bei der Installation lief anscheinend alles glatt, keine Warnungen, Hinweise o.ä.

Ein zweites Durchführen der fileformatconverters.exe brachte nichts.

Und in der Test-xlsx habe ich nur in 5 Zellen was drinstehen.

Bin da ratlos.

Gruß
Reinhard

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -