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

Übersetzungsfunktion

Übersetzungsfunktion
15.05.2013 12:57:11
Thms
Liebes Forum,
ich stehe vor folgendem Problem:
Es gibt ein Excel-Kalkulationstool (sehr umfassend) auf deutscher Sprache.
Hierin kann man in einigen Zellen beliebig die Werte ändern, woraus dann entsprechend unterschiedliche Ergebnisse resultieren.
Dieses Tool soll nun Chinesen vorgestellt werden, allerdings nicht auf Deutsch, sondern in englischer sowie chinesischer Sprache.
D.h. in das Tool soll eine Übersetzungsfunktion eingefügt werden, die es per Drop-Down Menü ermöglicht, das Tool in den unterschiedlichen Sprachen anzeigen zu lassen.
Mit meinem begrenztem Excel Know-How ist meine bisherige Idee:
  • Ein „Vokabel“-Tabellenblatt mit allen Begriffen und ihren Übersetzungen (extrem viele) – erstellen – wie in einem Vokabelheft.
    Darüber ein Drop Down Menü mit „Deutsch, Englisch, Chinesisch“ zur Auswahl einfügen.
    In alle betreffenden Zellen des Tools einen WVERWEIS einfügen, der sich auf das Drop Down Menü bezieht und je nach Auswahl die jeweiligen Übersetzungen aus dem „Vokabel“-Tabellenblatt ausliest.

  • Die Konsequenz bei diesem Vorgehen:
    Extrem monotone, fehleranfällige Arbeit, die zusätzlich auch noch sehr zeitintensiv ist.
    Meine Fragen:
    Habt ihr Ideen, wie man das einfacher, schneller und sicherer umsetzen könnte? (Am besten ohne Makros in der Endversion der Tools).
    Meine Alternatividee ist:
    Das Tool in die Sprachen übersetzen zu lassen und dann irgendwie – hier bräuchte ich Hilfe oder Hinweise – die 3 verschiedenen Sprachversionen in den Hintergrund einer neuen Version zu packen, bei der man die verschiedenen Sprachen einfach anklicken kann und dann die gewünschte Version angezeigt wird.
    Mir ist klar, am einfachsten sind 3 Dateien in den unterschiedlichen Sprachen. Doch Ziel ist es, eine Datei zu haben, deren Sprache man einfach per Klick ändern kann – ohne dass man dann in 3 verschiedenen Versionen erst die variabel eingebbaren Werte angleichen muss, damit jeder verstehen und sehen kann was eine Änderung von Zahlen als Folge hat.
    Für jegliche Hilfe bin ich euch sehr verbunden.
    Beste Grüße
    Thomas

    90
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: deutsch > englisch + retours
    15.05.2013 13:33:08
    Rudi
    Hallo,
    Formeln sollten doch nicht das Problem sein. Eine auf deutschem Excel erstellte Formel funktioniert doch in jeder Sprache.
    Bis auf ein paar Ausnahmen, z.B.=Zelle("Dateiname") muss die englischen Argumente (=Zelle("filename")) beinhalten.
    Ich denke mal, es geht eher um erläuternde Texte.
    Gruß
    Rudi

    AW: deutsch > englisch + retours
    15.05.2013 14:29:39
    Thms
    Richtig!
    Es geht nicht um die Formeln!
    Es geht darum, dass ich nicht für jedes einzelne Wort eine Formel eintragen möchte!

    Anzeige
    AW: deutsch > englisch + retours
    15.05.2013 14:48:44
    Rudi
    Hallo,
    1. 'riecht' das nach Auftragsprogrammierung.
    2. wirst du wohl um "Extrem monotone, fehleranfällige Arbeit, die zusätzlich auch noch sehr zeitintensiv ist" nicht herum kommen.
    Was soll man mehr dazu sagen, wenn man die Mappe nicht kennt?
    Gruß
    Rudi

    Dann nimm doch für jede, Sprache
    15.05.2013 14:51:35
    EtoPHG
    ein eigenes Tabellenblatt, Thomas,
    Das Übersetzten/Verwalten der Begriffe musst du so oder so organisotorisch in den Griff kriegen.
    Alle Blätter sind gleich aufgebaut und enthalten die gleichen Formeln, nur die fixen Textbegriffe sind halt in die jeweilige Sprache übersetzt.
    Gruess Hansueli

    Anzeige
    AW: Dann nimm doch für jede, Sprache
    15.05.2013 14:57:06
    Thms
    Hallo,
    ja an sich wäre das möglich, ABER; die Datei hat bereits 20 Tabellenblätter. D.h. daraus würden 60. Darin findet dann wirklich niemand mehr etwas. :/

    AW: Übersetzungsfunktion
    15.05.2013 14:43:22
    Klaus
    Hi,
    In alle betreffenden Zellen des Tools einen WVERWEIS einfügen, der sich auf das Drop Down Menü bezieht und je nach Auswahl die jeweiligen Übersetzungen aus dem „Vokabel“-Tabellenblatt ausliest.
    das währ auch meine Idee, so hab ich das mal für eine deutsch/englisch/tschechische Tabelle gelöst.
    Ich kenne deinen Tabellenaufbau nicht, aber das meiste werden Zahlen sein? Vielleicht kannst du neben jeder beschriebenen Spalte noch zwei Hilfsspalten einfügen, und unter jeder Überschriftenzeile noch zwei Hilfszeilen. Dann alles dreisprachig beschriften. Für die Benutzung, die nicht benötigten Spalten / Zeilen ausblenden (das sollte man dann per Makro erledigen, damit es nicht jedesmal so fummelig wird).
    Oder (leider auch eine Makro-Idee):
    die Vokabelliste Zeile für Zeile durchgehen, und jedesmal ein "suchen & ersetzen" Makro über das gesamte Blatt jagen.
    Am Ende glaube ich, du kommst um die vielen W-Verweise und die stupide Arbeit einfach nicht herum.
    Grüße,
    Klaus M.vdT.

    Anzeige
    AW: Übersetzungsfunktion
    15.05.2013 15:00:50
    Thms
    Hallo,
    danke für die Antwort!
    Es sind insgesamt 20 Tabellenblätter mit bestimmt mehr als 1000 Wörtern insgesamt. Daher auch die Angst das alles per Hand einfügen zu müssen.
    Die Such- und Ersetzfunktion per Makro - das würde bei der Anzahl auch eine gewisse Zeit dauern oder?
    Beste Grüße!
    Thomas

    AW: Übersetzungsfunktion
    15.05.2013 15:03:33
    Klaus
    Hi,
    Die Such- und Ersetzfunktion per Makro - das würde bei der Anzahl auch eine gewisse Zeit dauern oder?
    Wenns sauber, das heisst ohne select usw. programmiert ist, dürfte das recht fix gehen.
    Und, ganz ehrlich, selbst wenns ne Minute dauert ...
    Ich bastel mal was und meld mich nochmal.
    Grüße,
    Klaus M.vdT.

    Anzeige
    AW: Übersetzungsfunktion
    15.05.2013 15:09:00
    Thms
    Danke!
    Letztlich ist es halt leider eine Makrolösung, was eigentlich "nicht geht". Aber definitiv besser als das alles per Hand zu machen. Etwas zu "suchen und ersetzten" ist aber ohne Makro gar nicht möglich oder?

    AW: Übersetzungsfunktion
    15.05.2013 15:24:32
    Klaus
    Hi,
    Etwas zu "suchen und ersetzten" ist aber ohne Makro gar nicht möglich oder?
    Klar - mit STRG+H
    Wenn du 1000 Vokabeln über 20 Blätter hast, musst du das halt 20.000 mal per Hand machen.
    Hier meine "geht gar nicht" Makrolösung. Ich meine, die hat sogar noch Optimierungspotential.
    https://www.herber.de/bbs/user/85341.xlsm
    Grüße,
    Klaus M.vdT.

    Anzeige
    Optimierung:
    15.05.2013 15:27:50
    Klaus
    Hi,
    "Suchen und Ersetzen" geht auch über mehrere markierte Tabellenblätter gleichzeitig. Damit könnte das o.g. Makro um den Faktor 20 reduziert werden.
    Ich weiss grad leider nicht aus dem Kopf, wie ich in VBA ein Array aus mehreren Blättern anspreche. Wenn dir das Makro erstmal überhaupt taugt, meld dich nochmal - dann finde ich das heraus :-)
    Grüße,
    Klaus M.vdT.

    AW: Ein Beispiel
    15.05.2013 15:32:32
    EtoPHG
    Hallo zusammen,
    Zitat: ...so hab ich das mal für eine deutsch/englisch/tschechische Tabelle gelöst.

    ...und ich hab vor ~10 Jahren mal alle Excel-Funktionen in 9 verschiedenen Sprachen in https://www.herber.de/bbs/user/85342.xls gesammelt. Die Mappe gibt vielleicht einige Ideen, obwohl hier von jeder Sprache in jede andere übersezt wird. Generell würde ich alle Begriffe auf einem Zentralen Blatt verwalten und nur noch mit einfachen Index-Verweisen (wie es Rudi weiter unten darstellt) den Wert in die Zelle holen. Das hält den Verwaltungsaufwand klein und erlaubt es blitzschnell eine neue Sprache einzuführen (Spracheliste erweitern, Basissprache in neue Spalte anfügen und diese Spalte von Sprachkundigen von der Basissprache in die Zielsprach übersetzen [überscheiben] zu lassen).
    Gruess Hansueli
    P.S. @Klaus: Schau dir mal die Spalte M in den Begriffen an ;-)

    Anzeige
    AW: Ein Beispiel
    15.05.2013 15:35:58
    Klaus
    Hi Hansueli,
    Generell würde ich alle Begriffe auf einem Zentralen Blatt verwalten und nur noch mit einfachen Index-Verweisen
    ob das nun mit INDEX oder WVERWEIS passiert, ist ja erstmal Jacke wie Hose. Thms will ja eben nicht jedes Wort anfassen und gegen eine Formel tauschen müssen.
    (andererseits will er auch kein VBA benutzen, und zaubern kann keiner)
    Deine Datei kann ich leider nicht laden, ich bekomme einen "Zero Size Reply" Fehler vom Server. Passiert mir nicht das erste mal, liegt glaub ich an mir und nicht an Server ..
    Grüße,
    Klaus M.vdT.

    Wär aber schade, wenn du dir die
    15.05.2013 15:41:23
    EtoPHG
    Spalte M nicht anschauen könntest, Klaus
    Hier ist der Link noch einmal. / Gruess Hansueli

    Anzeige
    AW: Wär aber schade, wenn du dir die
    15.05.2013 15:45:47
    Klaus
    Hi Hansueli,
    den Link kann ich schon clicken. Du müsstest die Datei bitte erneut hochladen ... ich hab übrigend keine Ahnung worand das liegt.
    Grüße,
    Klaus M.vdT.

    AW: Wär aber schade, wenn du dir die
    15.05.2013 15:58:01
    Thms
    Okay,
    also als kurzes Fazit für mich:
    Ich erstelle, wie zu Beginn die Idee, eine "Vokabel"-Liste mit entsprechendem Index.
    Im Anschluss Füge ich dann wohl oder übel einen WVERWEIS in die Zellen ein, in denen sich die verschiedenen die Begriffe, je nach Wunschsprache befinden sollen?
    Beste Grüße
    Thomas

    AW: Übersetzungsfunktion
    15.05.2013 15:19:58
    Rudi
    Hallo,
    eine Möglichkeit:
    ABCDEFGH
    1IndexDEC Sprache:D 
    21D_Text1E_Text1C_Text1    
    32D_Text2E_Text2C_Text2    
    43D_Text3E_Text3C_Text3   D_Text1
    54D_Text4E_Text4C_Text4    
    65D_Text5E_Text5C_Text5    
    76D_Text6E_Text6C_Text6   D_Text5
    87D_Text7E_Text7C_Text7    
    98D_Text8E_Text8C_Text8    
    10        
    11       D_Text2
    12        
    13       D_Text3

    ABCDEFGH
    1IndexDEC Sprache:C 
    21D_Text1E_Text1C_Text1    
    32D_Text2E_Text2C_Text2    
    43D_Text3E_Text3C_Text3   C_Text1
    54D_Text4E_Text4C_Text4    
    65D_Text5E_Text5C_Text5    
    76D_Text6E_Text6C_Text6   C_Text5
    87D_Text7E_Text7C_Text7    
    98D_Text8E_Text8C_Text8    
    10        
    11       C_Text2
    12        
    13       C_Text3

    NameBezug
    _T1=INDEX(Texte;VERGLEICH(1;Tabelle1!$A:$A;);VERGLEICH(Sprache;Tabelle1!$1:$1;))
    _T2=INDEX(Texte;VERGLEICH(2;Tabelle1!$A:$A;);VERGLEICH(Sprache;Tabelle1!$1:$1;))
    _T3=INDEX(Texte;VERGLEICH(3;Tabelle1!$A:$A;);VERGLEICH(Sprache;Tabelle1!$1:$1;))
    _T5=INDEX(Texte;VERGLEICH(5;Tabelle1!$A:$A;);VERGLEICH(Sprache;Tabelle1!$1:$1;))
    Texte=INDEX(Tabelle1!$A:$A;1):INDEX(Tabelle1!$D:$D;ANZAHL2(Tabelle1!$A:$A))

    ZelleFormel
    H4=_T1
    H7=_T5
    H11=_T2
    H13=_T3

    ZelleGültigkeitstypOperatorWert1Wert2
    G1Liste D;E;C

    Die Namen für die Texte könnte man per Makro generieren.
    Gruß
    Rudi

    Anzeige
    AW: Übersetzungsfunktion
    16.05.2013 10:41:13
    Thms
    Hallo Rudi, hallo Forum,
    danke für Eure Hilfe bisher!!
    Ich habe jetzt einmal versucht, das etwas nachzubauen und konkret auf mein Beispiel zu beziehen. (Siehe meine Tabellen) https://www.herber.de/bbs/user/85353.xlsx
    Mein Problem ist jetzt mein Unwissen was die vorgeschlagenen Formeln angeht:
    Wo muss ich welche eintragen, damit ich per Klick die entsprechenden Wörter im Tabellenblatt "Projektname und -laufzeit" übersetzt bekomme?
    Meine Frage liegt vor allem darin begründet, dass mich nicht klar ist, wo Rudi's Formel "Texte" eingefügt werden muss, bzw. worauf sich das konkret bezieht.
    Wäre super wenn mir da nochmal geholfen werden könnte! Evtl. einfach ein Beispiel eintragen, dass ich übertragen kann?!
    Herzliche Grüße
    Thomas

    Anzeige
    AW: Übersetzungsfunktion
    16.05.2013 11:36:03
    EtoPHG
    Hallo Thomas,
    Schau dir mal deine etwas modifizierte Beispielmappe an. Wähle eine andere Sprache und schau was auf deinem Blatt "Projektname und -laufzeit" passiert. Alle Texte sind mit der immer gleichen Formel ersetzt.
    Motivation für meinen Lösungsvorschlag:
    Formel: =INDEX(Translate!A:D;VERGLEICH("Einheit";Translate!A:A;0);Translate!$D$1)
    Warum der deutsch Begriff in "Text" und nicht gleich der Index des Ausdrucks in der Formel, also in diesem Beispiel =INDEX(Translate!A:D;5;Translate!$D$1) ?
    Weil ich dann die genaue Position des Begriffs in der Translate-Blatt wissen muss. Es darf niemand Zeilen im Translate-Blatt einfügen/verschieben/löschen. Gebe ich einen neuen Begriff ein, sehe ich durch den Fehlerwert #NV, dass dieser im Translate-Blatt noch fehlt. Nachdem ich ihn in allen Sprachen ergänzt hab ist er automatisch überall wo er auftaucht korrigiert.
    Gruess Hansueli

    AW: Übersetzungsfunktion
    16.05.2013 11:41:41
    Rudi
    Hallo,
    mal nur mit Formeln:
    ABCDEFGHIJKL
    2Name           
    3            
    4     Unit Comments:
    5 Projectname   -  
    6        
    7 Project start and end   Unit  
    8  Start of delivery  -  
    9   Year -2013 
    10 MonatMonatMonth -6test 4
    11  End of delivery  -  
    12   Year -2023test 5
    13 MonatMonatMonth -5test 6

    ZelleFormel
    A2=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(1;Translate!$A:$A;))
    F4=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(3;Translate!$A:$A;))
    H4=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(12;Translate!$A:$A;))
    B5=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(2;Translate!$A:$A;))
    B7=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(4;Translate!$A:$A;))
    F7=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(3;Translate!$A:$A;))
    C8=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(5;Translate!$A:$A;))
    D9=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(7;Translate!$A:$A;))
    D10=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(8;Translate!$A:$A;))
    H10=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(13;Translate!$A:$A;))
    C11=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(6;Translate!$A:$A;))
    D12=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(7;Translate!$A:$A;))
    H12=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(14;Translate!$A:$A;))
    D13=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(8;Translate!$A:$A;))
    H13=INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(15;Translate!$A:$A;))

    Gruß
    Rudi

    AW: Übersetzungsfunktion
    16.05.2013 12:37:59
    Thms
    Hallo,
    super! Vielen herzlichen Dank! Jetzt kann ich damit auf jeden Fall weitermachen.
    Habe aber dennoch ein paar Fragen (möchte das Ganze gerne auch etwas besser verstehen und evtl. auch mal ohne Hilfe hinbekommen):
  • Ich hatte mir das so ähnlich ja mit einem WVERWEIS zu Beginn überlegt,
    Z.B.:
    =WVERWEIS(Translate!D6;Translate!C10:E14;3;FALSCH)
    =WVERWEIS(Translate!D6;Translate!C10:E14;4;FALSCH)
    usw..
    Gibt es einen bestimmten Grund, weshalb es sinnvoller ist die INDEX und VERGLEICH - Formeln zu verwenden?

  • Könnte mir nochmal jemand erklären, wie das Prinzip bzw. die Abfolge von der INDEX-Version, die jetzt verwendet wird, funktioniert?
    =INDEX(INDEX(Translate!$A:$D;;VERGLEICH(Translate!$F$2;Translate!$2:$2;));VERGLEICH(1; Translate!$A:$A;)) usw.
    Ist das nun ein INDEX mit oder ohne Bezug?
    Je nach Variante: Was ist "Matrix;Zeile; Spalte bzw. "Bezug;Zeile;Spalte;Bereich"?
    Da das ja auch mit dem Drop-Down Menü verknüpft ist, würde mich interessieren wo bzw. wie das da eingebaut ist?

  • Beste Grüße
    Thomas

    AW: Übersetzungsfunktion
    16.05.2013 13:06:33
    Rudi
    Hallo,
    WVERWEIS ist ganz falsch. Wenn, dann SVERWEIS.
    z.B.
    A2: =Sverweis(1;Translate!$A:$D;VERGLEICH(Translate!$F$2;Translate!$2:$2;);)
    Gruß
    Rudi

    An m. Vorschlag wohl nicht interessiert? (owT)
    16.05.2013 14:04:18
    EtoPHG

    AW: An m. Vorschlag wohl nicht interessiert? (owT)
    16.05.2013 14:22:05
    Thms
    Sorry,
    was meinst Du mit m. Vorschlag genau?

    Beispielmappe in meiner Antwort! (owT)
    16.05.2013 14:26:29
    EtoPHG

    AW: Beispielmappe in meiner Antwort! (owT)
    16.05.2013 14:44:53
    Thms
    Hallo,
    ja das ist auch ne super Lösung. Nur ist mir (entschuldige meine Unwissenheit), nicht ganz klar, wie ich das dann möglichst geschickt auf die 20 Tabellenblätter und 1000 Begriffe übertragen kann?
    Hast du die Begriffe wie "Projektname" etc. in die Formel eingetippt?
    Mein Vorgehen wäre jetzt, dass ich die Formel immer kopiere und den zu übersetzenden Begriff dann immer händisch eingebe? Z.b:
    =INDEX(Translate!A:D;VERGLEICH("BLABALBLA";Translate!A:A;0);Translate!$D$1)
    =INDEX(Translate!A:D;VERGLEICH("BLUBBLUBBBLUBB";Translate!A:A;0);Translate!$D$1)
    usw?

    Ja händisch eingeben...
    16.05.2013 14:55:47
    EtoPHG
    Thomas, aber
    du gibst keinen 'übersetzten' Begriff ein, sondern den der Basissprache (also in deinem Fall Deutsch)
    Schreib doch einfach mal in eine leere Zelle =INDEX(Translate!A:D;VERGLEICH("BLABALBLA";Translate!A:A;0);Translate!$D$1): Das wird mit #NV quittiert und dann siehe meine Erläuterungen weiter oben. Hast du auch schon Sprachen umgeschaltet? Da siehst auf 1 Blick, was noch nicht übersetzt ist!
    Wenn ein Begriff wie z.B. Monate in deiner Mappe x mal vorkommt, dann sind das exakte Kopien der Zelle, in der die Formel schon einmal eingegeben wurde. Du redest immer von 1000 Begriffen?
    Wohl 1000/20 ? = 50
    Oder den wievielten Teil deines Gesamtprojekts repräsentiert deine Beispielmappe?
    Sind die 20 Blätter nicht einfach verschiedene Projekte mit immer demselben Aufbau?
    Gruess Hansueli

    AW: Ja händisch eingeben...
    16.05.2013 15:17:00
    Thms
    Hallo Hansueli,
    ich habe mal ein Screenshot gemacht, evtl. wird der Umfang daran etwas ersichtlicher.
    Jedenfalls, SUPER! Das mit dem sehen, was übersetzt wurde und was nicht - sehr gut!
    Gut ist auch, dass man die Übsetzungstabelle einfach erweitern/filtern kann usw.
    Andere Frage: Gibt es evtl. eine Möglichkeit alle Begriffe die verwendet wurden in die Translatetabelle einlesen zu lassen - als untereinanderstehende Begriffe?
    Userbild
    Beste Grüße!

    Nach diesem Screenshot zu urteilen,
    16.05.2013 15:36:19
    EtoPHG
    würde ich dann eher eine GUI und DB-basierte Anwendung in Betracht ziehen, Thomas
    Das mit EXCEL abzuwickeln, dürfte irgendwann unwartbar werden.
    Natürlich gäbe es einfache VBA-Makros, welche dir aus allen Textzellen mal die Begriffe auslesen und in ein Tabellenblatt schreiben. Wenn ich den Screenshot anschaue, sehe ich aber viele Text, die aus mehreren Worten oder Textabschnitten bestehen und da fragt es sich schon ob ein Begriff wie z.B. Wärme nur einmal aufgeführt/übersetzt wird, oder jedesmal auch in den zusammengesetzten Worten, wie Wärmezufuhr. Das ist aber mehr ein Sprach-logisches Problem und die 'Unart' des Deutschen, dass Hauptwörter fast beliebig zusammengesetzt werden können, ist da eher kontraproduktiv.
    Im Übrigen wirst du schon bei deinen Registerbezeichnungen nicht um VBA rumkommen, da mir kein Mechanismus bekannt, ist der Registernamen dynamisch ohne VBA ändern könnte!
    Gruess Hansueli

    AW: Nach diesem Screenshot zu urteilen,
    16.05.2013 15:45:01
    Thms
    jetzt muss ich natürlich mal dumm fragen:
    Was ist GUI und DB-basiert? :)
    Man könnte ja ruhig alles auslesen lassen und dann eben die Begriffe einfach mehrfach übersetzen lassen. Alles andere würde dann ohnehin iwann zu Sucherei usw. führen? Dann lieber sicher und besser alles einzelnd.
    Grüße
    Thomas

    D.h. auf Excel verzichten und
    16.05.2013 15:50:47
    EtoPHG
    aus dem Ganzen eine Applikation schreiben lassen, Thomas
    GUI = Graphical User Interface = Benutzeroberfläche = Die Anzeige der Daten und Steuerung der Abläufe, Berechnungen etc.
    DB = Data Base = Datenbank = Datenhaltung, Transaktionskontrolle, Datensicherung, Zugriffsverwaltung etc.
    Gruess Hansueli

    GUI / DB
    16.05.2013 15:51:22
    Klaus
    GUI = Graphical User Interface
    sprich, ein Fensterchen in dem der Nutzer Buttons clicken darf, anstatt sich auf die Formelebene zu begeben. Wenn du eine Userform mit einer Textbox machst, und den Inhalt der Textbox per Button nach A1 schreibst - das ist im Prinzip schon eine GUI.
    DB = Datenbank
    muss ich nicht erklären, oder? :-)
    Wenn ich mir den Screenshot ansehe, würd ich da einen professionellen Übersetzer ran lassen. Mit reinem Wörtertauschen wird das doch nie was.
    Am Ende gibt es drei Files, für jede Sprache eins. Alle Zahlen die da drinnen stehen exportierst du (per VBA!) in ein anderes Blatt, dass du dann mit der anderen Sprachversion (wieder per VBA) einliest.
    Aber sich bei dem Umfang an "Wörter tauschen" und "VBA-Frei" festzuklammern, halte ich für illusorisch.
    Grüße,
    Klaus M.vdT.

    AW: GUI / DB
    16.05.2013 15:54:13
    Thms
    Hallo,
    ja, natürlich wird das von einem Profi übersetzt!
    Okay, d.h. an meiner Stelle würdet ihr jmd. beauftragen der das programmiert?

    Alles Automatisch....
    16.05.2013 17:27:48
    EtoPHG
    Hallo Thomas,
    Also:
    1 probier das bitte an einer Kopie deiner Mappe aus!
    2 Diesen Code kopierst du in ein leeres Modul
    2a Alt-F11 VBE aufrufen
    2b Im Projektexplorer Rechtsklick auf VBAProjekt - Einfügen - Modul
    2c Den Code in das leere Fenster kopieren
    Option Explicit
    Sub MLTableBuilder()
    Const MLTabName As String = "MLTerms"
    Const MLFormula As String = "=INDEX(" & MLTabName & _
    "!A:D,MATCH(""$TextTerm$""," & _
    MLTabName & "!A:A,0)," & MLTabName & "!$D$1)"
    Dim ws As Worksheet, wsMTL As Worksheet
    Dim rC As Range
    Dim lRow As Long, lCol As Long
    If Not wsExists(MLTabName) Then
    With ThisWorkbook.Worksheets.Add
    .Name = MLTabName
    .Cells(1, 1) = "Translation-Tabelle"
    .Cells(1, 2) = "Sprache"
    .Cells(3, 1) = "Deutsch"
    .Cells(3, 2) = "English"
    With .Cells(1, 3).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:="=$A$3:$B$3"
    End With
    .Cells(1, 3) = .Cells(3, 1)
    .Cells(1, 4).Formula = "=MATCH(C1,A3:B3,0)"
    End With
    Set wsMTL = ThisWorkbook.Worksheets(MLTabName)
    lRow = 4
    Else
    Set wsMTL = ThisWorkbook.Worksheets(MLTabName)
    With wsMTL
    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    End With
    End If
    lCol = wsMTL.Cells(3, wsMTL.Columns.Count).End(xlToLeft).Column
    For Each ws In ThisWorkbook.Worksheets
    If ws.Name  MLTabName Then
    Application.StatusBar = "Texte extrahieren aus " & ws.Name
    For Each rC In ws.UsedRange
    If Not (IsNumeric(rC) Or rC.Cells(1, 1).HasFormula) Then
    wsMTL.Cells(lRow, 1) = rC.Cells(1, 1).Text
    wsMTL.Cells(lRow, 2) = rC.Cells(1, 1).Text
    rC.Cells(1, 1).Formula = Replace(MLFormula, "$TextTerm$", _
    Replace(rC.Cells(1, 1).Text, """", """"""))
    lRow = lRow + 1
    End If
    Next rC
    End If
    Next ws
    Application.StatusBar = "Sortieren und Duplikate entfernen"
    With wsMTL
    With .Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("A3"), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange wsMTL.Range(wsMTL.Cells(3, 1), wsMTL.Cells(lRow - 1, lCol))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    With .Range(.Cells(3, 1), .Cells(lRow - 1, lCol))
    .RemoveDuplicates Columns:=Array(1, lCol), Header:=xlYes
    End With
    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    MsgBox "MLTerms Tabelle wurde aufgebaut/ergänzt!" & vbCrLf & _
    "Total Begriffe : " & (lRow - 4), vbInformation
    Application.StatusBar = False
    End Sub
    Function wsExists(WorksheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    wsExists = Not ThisWorkbook.Worksheets(WorksheetName) Is Nothing
    On Error GoTo 0
    End Function
    

    3. Das Blatt Translate löschen!
    4. Das Makro MLTableBuilder laufen lassen.
    Du wirst in der Statusleiste von Excel informiert, was abgeht.
    Es wird ein neues Blatt MLTerms angelegt, auf dem du die Texte übersetzt.
    Du kannst in deine Mappe normal neue Texte einfügen (d.h. ohne Formel!) und das Makro erneut laufen lassen.
    Die neuen Begriffe sollten dann ergänzt werden und müssen noch übersetzt werden.
    Neue Sprache = Zusätzlich Spalte einfügen und am besten aus einer Basissprache (für den Übersetzter) die Begriffe in diese kopieren.
    Gruess Hansueli

    Korrigiert und Tuned,
    16.05.2013 19:05:14
    EtoPHG
    Hallo Thomas,
    Nimm diese (korrigierte/verbesserten bzgl. Geschwindigkeit) Code:
    Option Explicit
    Sub MLTableBuilder()
    Const MLTabName As String = "MLTerms"
    Const MLFormula As String = "=INDEX(" & MLTabName & _
    "!A:D,MATCH(""$TextTerm$""," & _
    MLTabName & "!A:A,0)," & MLTabName & "!$D$1)"
    Dim ws As Worksheet, wsMTL As Worksheet
    Dim rC As Range
    Dim lRow As Long, lCol As Long
    GetMoreSpeed True
    If Not wsExists(MLTabName) Then
    With ThisWorkbook.Worksheets.Add
    .Name = MLTabName
    .Cells(1, 1) = "Translation-Tabelle"
    .Cells(1, 2) = "Sprache"
    .Cells(3, 1) = "Deutsch"
    .Cells(3, 2) = "English"
    With .Cells(1, 3).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:="=$A$3:$B$3"
    End With
    .Cells(1, 3) = .Cells(3, 1)
    .Cells(1, 4).Formula = "=MATCH(C1,A3:B3,0)"
    End With
    Set wsMTL = ThisWorkbook.Worksheets(MLTabName)
    lRow = 4
    Else
    Set wsMTL = ThisWorkbook.Worksheets(MLTabName)
    With wsMTL
    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    End With
    End If
    lCol = wsMTL.Cells(3, wsMTL.Columns.Count).End(xlToLeft).Column
    For Each ws In ThisWorkbook.Worksheets
    If ws.Name  MLTabName Then
    Application.StatusBar = "Texte werden extrahiert aus " & ws.Name
    For Each rC In ws.UsedRange
    If Not (IsNumeric(rC) Or rC.Cells(1, 1).HasFormula) Then
    wsMTL.Cells(lRow, 1) = rC.Cells(1, 1).Text
    wsMTL.Cells(lRow, 2) = rC.Cells(1, 1).Text
    rC.Cells(1, 1).Formula = Replace(MLFormula, "$TextTerm$", _
    Replace(rC.Cells(1, 1).Text, """", """"""))
    lRow = lRow + 1
    End If
    Next rC
    End If
    Next ws
    Application.StatusBar = "Sortieren und Duplikate entfernen"
    With wsMTL
    With .Sort
    .SortFields.Clear
    .SortFields.Add Key:=wsMTL.Cells(3, 1), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange wsMTL.Range(wsMTL.Cells(3, 1), wsMTL.Cells(lRow - 1, lCol))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    With .Range(.Cells(3, 1), .Cells(lRow - 1, lCol))
    .RemoveDuplicates Columns:=Array(1, lCol), Header:=xlYes
    End With
    lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    GetMoreSpeed False
    MsgBox "MLTerms Tabelle wurde aufgebaut/ergänzt!" & vbCrLf & _
    "Total Begriffe : " & (lRow - 4), vbInformation
    Application.StatusBar = False
    End Sub
    Function wsExists(WorksheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    wsExists = Not ThisWorkbook.Worksheets(WorksheetName) Is Nothing
    On Error GoTo 0
    End Function
    Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
    Static intCalculation As Integer
    If Modus = True Then intCalculation = Application.Calculation
    With Application
    .ScreenUpdating = Not Modus
    .EnableEvents = Not Modus
    .Calculation = IIf(Modus = True, xlManual, intCalculation)
    .Cursor = IIf(Modus = True, 2, -4143)
    End With
    End Sub
    

    Gruess Hansueli

    AW: Korrigiert und Tuned,
    16.05.2013 20:25:45
    Thomas
    Hallo Hansueli,
    super! Herzlichen Dank für deine Mühe! Wirklich sehr nett, wie mir hier geholfen wird!
    Ich werde das morgen probieren sobald ich wieder am PC bin!
    "Du kannst in deine Mappe normal neue Texte einfügen (d.h. ohne Formel!) und das Makro erneut laufen lassen.
    Die neuen Begriffe sollten dann ergänzt werden und müssen noch übersetzt werden."
    Okay. D.h. es werden alle Begriffe in ein neues Blatt gelesen. Dieses kann ich dann an den Übersetzer reichen und der tut seine Arbeit.
    Allerdings: Damit die "Übersetz mir alle Begriffe per Klick - Funktion" funktioniert, muss ich wie in deiner Beispieltabelle weiter oben, wohl oder übel die INDEX Formel händisch eingeben. Korrekt?
    Liebe Grüße
    Thomas

    Nein auch Formeln werden, automatisch
    16.05.2013 20:29:55
    EtoPHG
    eigefügt, Thomas,
    Nur laufen lassenn. Fertig!
    Gruess Hansueli

    AW: Korrigiert und Tuned,
    17.05.2013 08:51:27
    Thms
    Hallo Hansueli,
    leider bekomme ich einen Fehler beim Ausführen des Codes: "Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler".
    Klicke ich auf debuggen, zeigt er mir folgendes im Code an:
     rC.Cells(1, 1).Formula = Replace(MLFormula, "$TextTerm$", _
    Replace(rC.Cells(1, 1).Text, """", """"""))
    
    Mir ist jetzt auch noch folgende Idee gekommen:
    Da das Ganze ja eigentlich "Makrofrei" sein soll in der Endversion. Könnte man nicht einen Code schreiben der:
  • Alle Begriffe in ein Extra Blatt einliest - in die "Translatetabelle" (so wie es jetzt ja eigentlich auch schon sein soll).

  • Im Anschluss per "suchen und ersetzen" Makro, ausgehend von der Translate Tabelle, alle Begriffe mit der INDEX Formel von weiter oben in den restlichen Tabellenblättern ersetzt? So dass dann alle Zellen in den Tabellenblättern bezug nehmen auf das TranslateBlatt?

  • Herzliche Grüße
    Thomas

    händisch ?
    16.05.2013 15:35:56
    Klaus
    Hi,
    bei dem Umfang würde ich ja sonstwas versuchen, um mich vor dem händischem zu drücken :-)
    in Pseudocode so:
    for each r in activesheet.usedrange
    if KEINEZAHL(r) and KEINEFORMEL(r) then
    r.formulalocal = "=INDEX(Translate!A:D;VERGLEICH(" & r.value & ";Translate!A:A;0);Translate!$D$1)"
    end if
    next r

    Kannst du das anpassen?
    Grüße,
    Klaus M.vdT.

    AW: händisch ?
    16.05.2013 15:46:51
    Thms
    Ja!
    Meine Worte :) Per Hand ist ziemlicher Wahnsinn. Aber ich weiss mir momentan nicht anders zu helfen ..
    Ich würde den Code gerne anpassen können, aber dazu fehlt mir das nötige Wissen :(
    Beste Grüße
    Thomas

    AW: händisch ?
    16.05.2013 15:55:09
    Klaus
    Hi Thomas,
    lad doch mal eine der Tabellen hoch, und die Vokabelliste.
    Der Inhalt ist bestimmt geheim. Ersetze alle Formeln durch =ZUFALLSZAHL()
    (bitte die ZEllen nicht löschen, da ich wohl auf "hatformel" abfragen muss)
    Grüße,
    Klaus M.vdT.

    Vollautomatisch-Makro
    17.05.2013 08:47:11
    Klaus
    Hi,
    Starte das Makro "TestCall" (in diesem wird das Blatt "EPC-Electricity" aktiviert).
    Das Makro macht folgendes:
    Die Vokabelliste wird um alle fehlenden Vokablen / Phrasen ergänzt. Ausserdem werden alle "Text"-Zellen durch eine Formel ersetzt, die sich Vokabeln aus der Übersicht zieht.
    Also: "TestCall" starten, die Vokabelliste füllen (das muss händisch !!!), "TestCall" nochmal starten. Das Blatt "EPC-Electricity" ist dynamisiert (durch das Dropdown in Translate!C2 die Sprache wählen)
    Ich gehe immer den gesamten Zelleninhalt als "Phrase" an. Das bedeutet natürlich, dass du einmal "Summe Baseline" und einmal "Eingabe Baseline" übersetzen musst! Nur "Summe" und "Baseline" einzeln in die Liste schreiben bringt es nicht.
    https://www.herber.de/bbs/user/85365.xlsm
    Sobald das fürs erste Blatt läuft, ist es eine Kleinigkeit dass über alle Blätter laufen zu lassen.
    Zu den "deutschen" Tabellen-Reitern: Da würde ich einen Reiter "Inhalt" erstellen, der jeden Tabellenblattnamen dreisprachig auflistet und dann dorthin Hyperlinkt. Wenn du die Blattnamen per VBA änderst, gibts garantiert irgendwann Chaos.
    Grüße,
    Klaus M.vdT.
    P.S.: Wenn dir das 100 Stunden arbeit spart, dann würde ich mich über eine angemessene Geldspende freuen. Nicht an mich, sondern an http://www.plan-deutschland.de/helfen-mit-plan/spenden/ oder eine ähnliche Organisation!

    Nachtrag: was nicht geht
    17.05.2013 08:49:53
    Klaus
    Hallo nochmal,
    das o.g. Makro fasst natürlich keine Formeln oder Zahlenwerte an!
    Nebeneffekt ist natürlich: wenn du eine Zelle hast in der zb ="Baseline"&A1 steht, dann ist das eine FORMEL und wird vom Makro ignoriert dh nicht übersetzt. Aber ich glaub das sind unter 1%, und das lässt sich auch schlau lösen (am Beispiel: "Baseline" in Z1 schreiben+ausblenden, und als Formel =Z1&A1 einsetzen. Jetzt wird "Baseline" übersetzt vom Makro, und der Zelleninhalt der Formel ist korrekt)
    Grüße,
    Klaus M.vdT.

    AW: Nachtrag: was nicht geht
    17.05.2013 09:25:17
    Thms
    Hallo,
    ich verstehe das leider noch nicht ganz - sorry.
    Konkretes Beispiel:
    Ich habe eine Zelle in der steht: ="Berechnung Baseline Entwicklung " &A2
    Was soll ich jetzt konkret in Z1 schreiben? und wie meinst du das mit "Formel einsetzen". Die werden doch nicht ausglesen? - Ich vermute ich bin gerade schwer von Begriff :)
    Ansonsten, da mir wirklich dadurch enorm viel Arbeit erspart bleibt, schreibe ich die Worte eben aus, die als Formel eingesetzt sind. Dann würde ja alles übersetzt.
    Wäre natürlich cool wenn du mir noch sagen könntest wie ich das Makro auf alle Tabellenblätter beziehen kann.
    Beste Grüße

    AW: Nachtrag: was nicht geht
    17.05.2013 09:47:21
    Klaus
    Hallo,
    Ich habe eine Zelle in der steht: ="Berechnung Baseline Entwicklung " &A2
    Was soll ich jetzt konkret in Z1 schreiben?

    in "Z1" (oder wo immer Platz ist) schreibst du "Berechnung Baseline Entwicklung "
    in die Zelle schreibst du =Z1 & A2
    Spalte Z blendest du aus.
    Jetzt erscheint "Berechnung Baseline Entwicklung" in der Vokabelliste!
    Wäre natürlich cool wenn du mir noch sagen könntest wie ich das Makro auf alle Tabellenblätter beziehen kann.
    Darauf antworte ich in einem neuen Thread, ganz links :-)
    Grüße,
    Klaus M.vdT.

    AW: Nachtrag: was nicht geht
    17.05.2013 10:20:47
    Klaus
    Hallo Thomas,
    falls du meinen neuen Beitrag nicht findest:
    https://www.herber.de/forum/messages/1313564.html
    ich bin jetzt noch ein wenig da (bis circa 13:00 deutscher Zeit) dann muss ich zum Flughafen. Wenn noch fragen sind, ich bin am Montag wieder im Forum.
    Grüße,
    Klaus M.vdT.

    AW: Nachtrag: was nicht geht
    17.05.2013 10:54:49
    Thms
    Hallo,
    ich habe jetzt die "generelle" Version verwendet so wie beschrieben.
    Das Problem: Das Makro läuft jetzt seit ca. 20 Minuten (so lange sollte das auch bei dem Umfang der Tabelle nicht dauern?)
    Im Task-Manager: CPU Auslastung von Excel: 55 Prozent. (Ist jetzt der zweite Versuch).
    Vermute mal, dass da was schief geht?
    Beste Grüße
    Thomas

    AW: Nachtrag: was nicht geht
    17.05.2013 11:02:51
    Klaus
    Hallo Thomas,
    kann ich nichts zu sagen, bei meiner Testdatei hat es funktioniert. Vielleicht hilft es, wenn du die automatischen berechnungen ausschaltest?
    Schau dir auch die neue Version an, mit google translate Button!!
    Jetzt muss ich wirklich los.
    Grüße,
    Klaus M.vdT.

    AW: Nachtrag: was nicht geht
    17.05.2013 11:02:54
    Thms
    Okay falscher Alarm!
    Hat funktioniert! An dieser Stelle nochmal vielen Dank!

    AW: Vollautomatisch-Makro
    17.05.2013 08:59:37
    Thms
    Hallo,
    ich habe das gerade ausprobiert! Genial! Das ist super! Ich danke Dir sehr herzlich. Melde mich gleich nochmal bzgl. deinem Eintrag hierunter. Das muss ich noch testen. Die Spende kommt garantiert! Finde ich wirklich bombastisch!

    Danke für RÜ! mit Text
    17.05.2013 09:02:36
    Klaus
    Hi Thms,
    das schöne ist: sobald alles übersetzt ist, kannst du das Makro sogar rauswerfen und die ganze Datei wieder als Makrofreies *.xlsx speichern.
    Danke für das Lob! Mir selbst gefällt das Tool auch *eigenlob* und ich werde es weiterentwickeln, so dass man es generell auf vorhandene Tabellen aufsetzen kann.
    Grüße,
    Klaus M.vdT.

    AW: Übersetzungsfunktion
    16.05.2013 14:26:43
    Rudi
    Hallo,
    so geht das schon.
    Du darfst nur deine Überstzungstabelle nie sortieren.
    Gruß
    Rudi

    AW: Übersetzungsfunktion
    16.05.2013 14:45:44
    Thms
    Mhh .. und wieso nicht?
    Sortieren geht nur mit INDEX in Verbindung mit Vergleich?

    AW: Übersetzungsfunktion
    16.05.2013 15:23:42
    Rudi
    Hallo,
    weil du hier
    =WVERWEIS(Tabelle1!D6;Tabelle1!C10:E14;3;FALSCH)
    einen festen Zeilenindex verwendest.
    Wenn du die Tab sortierst, steht in Zeile 3 was anderes.
    Gruß
    Rudi

    Übersetzungstool für alle!
    17.05.2013 09:49:06
    Klaus
    Hallo Forum, Hallo Thomas,
    ich habe im Rahmen dieses Artikels ein kleines Tool für Thomas geschrieben. Hier die etwas universellere Version für alle!
    https://www.herber.de/bbs/user/85366.xlsm
    Einfach das Blatt "Translate" per "Move or Copy" in eine eurer Dateien ziehen und den Knopf drücken. So einfach kann multi-lingual sein :-)
    Grüße,
    Klaus M.vdT.

    AW: Übersetzungstool für alle!
    17.05.2013 12:19:12
    Thms
    Hallo,
    eine Frage noch: Da ich nachdem alles übersetzt wurde usw. das Makro gerne wieder löschen würde; Das Makro löschen ist kein Problem. Aber den "Button" zum Ausführen bekomme ich leider nicht weg?
    Grüße
    Thomas

    AW: Übersetzungstool für alle!
    17.05.2013 13:07:49
    Thms
    erledigt :)

    AW: Übersetzungstool für alle!
    17.05.2013 14:43:24
    Thms
    Hallo,
    Mein Vorgehen:
  • Ich habe das Makro laufen lassen, die Translate-Tabelle ist also gefüllt mit Wörtern, die ich übersetzen lasse.

  • Wenn ich jetzt zwischen den Sprachen wechsle, habe ich es ja sehr einfach die Zellen mit Formeln (jetzt folgend beschrieben) zu finden:

  • "Ich habe eine Zelle in der steht: ="Berechnung Baseline Entwicklung " &A2
    Was soll ich jetzt konkret in Z1 schreiben?
    in "Z1" (oder wo immer Platz ist) schreibst du "Berechnung Baseline Entwicklung "
    in die Zelle schreibst du =Z1 & A2
    Spalte Z blendest du aus.
    Jetzt erscheint "Berechnung Baseline Entwicklung" in der Vokabelliste!"
    Wie oben beschrieben, gehe ich mit diesen Zellen um.
    Der entsprechende Text erscheint dann (nach erneutem Ausfüren des Makros) in der Vokabelliste.
    Aber:
  • Es erscheint nicht mehr, wie zuvor beim Ausführen des Makros "to be translated" in den Zellen rechts von der "Standardsprache".

  • Der neue Begriff in der Translate-Tabelle wird nicht mehr im eigentlichen Tabellenblatt angezeigt, es kommt zu einem Fehler "#Wert" - "Ein in der Formel verwenderter Wert ist vom falschen Datentyp".

  • Dies gilt auch wenn ich eine Übersetzung für entsprechenden Begriff eingefügt habe.

  • Ich mache bestimmt was falsch. Ich weiss leider nur nicht was.
    Beste Grüße
    Thomas

    Hier wäre noch meine Version,
    17.05.2013 15:40:41
    EtoPHG
    Hallo Thomas,
    Ich habe deine Beispielmappe erst spät entdeckt. Hab sie ein bisschen analysiert und festgestellt, dass du verschiedentlich Verkettungsformeln von fixen Texten mit Bezügen hast. Das war ein bisschen tricky, aber auch das klappt nun.
    Hier ist deine Beispielmappe mit den Makros ergänzt.
    Wenn du MLTableBuilder laufen lässt, werden fixe Texte und verkettete Texte in Formeln verwandelt. Gleichzeitig werden alle in die Sprachen englisch, französisch und italienisch übersetzt. Die Statusanzeige informiert dich, was das Makro gerade macht.
    Du kann das neu erstellte MLTerms-Blatt beliebig erweitern (um Sprachen und Begriffe).
    Wenn du neue fixe Texte in Benutzerblätter einfügst oder änderst, lass einfach das Makro wieder laufen und es erledigt alles für dich. Da die Texte automatisch via Google-Translator übersetzt wurden, bedürfen sie sicher noch Anpassungen (im MLTerms-Blatt) durch einen professionellen Übersetzter.
    Viel Vergnügen, Hansueli

    AW: Hier wäre noch meine Version,
    17.05.2013 16:34:21
    Thms
    Hallo,
    das klingt auch schon sehr gut!
    Aber leider stürzt bei dieser Version mein Excel ab.
    "Gleichzeitig werden alle in die Sprachen englisch, französisch und italienisch übersetzt."
    Wenn es geht würde ich das bitte aus dem Makro draußen lassen. Ich werde das einen "richtigen" Übersetzer machen lassen. Zudem brauche ich französisch und italienisch in der Version nicht. - Das ist ein geniales Feature und generell sehr nützlich, aber in meinem Fall eher hinderlich.
    Wenn Du mir erklärst wie, dann ändere ich das gerne auch nur für mich ab.
    Beste Grüße
    Thomas

    AW: Hier wäre noch meine Version,
    17.05.2013 16:37:46
    EtoPHG
    Hallo Thomas,
    Würde mich interessieren, was Aber leider stürzt bei dieser Version mein Excel ab.
    heisst? Hast du was am Code geschraubt?
    Fehlermeldungen? Debugger: gelbe Codezeilen ?
    Gruess Hansueli

    AW: Hier wäre noch meine Version,
    17.05.2013 19:17:00
    Thms
    Hallo Hansueli,
    komisch! Auf meinem "neuen" Rechner läuft es. Bei meiner "alten Mühle" hat sich Excel einfach verabschiedet. (Habe nichts am Code geändert o.ä., es hat angefangen zu arbeiten und sich dann aufgehängt..)
    Wie auch immer! - Diese Variante scheint wirklich die IDEAL-LÖSUNG zu sein. So jedenfalls bei der Testmappe. Vielen Dank dafür!!!
    Jetzt habe ich noch die alte/neue Frage:
    Könnte man das "Google-Translate-Feature" herausnehmen? Und lediglich die Begriffe einlesen lassen die verwendet wurden. Denn die werden ja von einem Profi übersetzt.
    Grüße!
    Thomas

    Ersetze:
    17.05.2013 19:33:35
    EtoPHG
    Hallo Thomas,
    Ganz einfach:
    Geh in den VBE-Editor
    Ersetze die den Code ganz am Schluss des Modules durch diesen:
    Function doTranslate(strDE As String, str2Lang As String) As String
    doTranslate = UCase(str2Lang) & ":" & strDE
    End Function
    
    Jetzt werden dir wenigstens die Basisbegriffe mit eine Prefix des Sprachcodes angezeigt.
    Wenn diese in der MLTerms Tabelle durch einen 'professionellen' Übersetzer ersetzt werden, treten sie anstelle des Begriffs.
    Wenn du weniger oder mehr Sprachen willst musst du die beiden Codezeilen ganz am Anfang noch z.B. so anpassen;
    Const MLangList As String = "Deutsch,English"
    Const MLangAbbrev As String = "de,en"
    

    Gruess Hansueli

    AW: Ersetze:
    17.05.2013 21:17:02
    Thms
    Hallo Hansueli,
    ich habe jetzt mal das Makro per "copy paste" in meine "richtige" Tabelle eingefügt (mehr Tabellenblätter etc.).
    Nach ausführen kommt es zu einem Fehler:
    " wsMTL.Cells(lRow, 1) = rC.Cells(1, 1).Text" ist im Code gelb markiert.
    Funktioniert das Makro nur für mein Beispieltabellenblatt? Ich dachte es sei ähnlich wie bei dem vorhirgen, das man quasi für jede beliebige Tabelle verwenden konnte.
    Herzliche Grüße
    Thomas

    Debuggen:
    17.05.2013 21:46:03
    EtoPHG
    Hallo Thomas,
    Ich war auch der Meinung, dass das Makro mit allen möglichen Zellinhalten zurecht kommt.
    Wenn der Code an dieser Zeile stoppt, muss ich wissen, was genau in dieser Zelle steckt.
    So müssen wir halt Fernwartung machen ;-) oder du mailst mir die Mappe an etop.info(at)bluewin.ch.
    Wenn der Debugger anhält mache folgendes:
    Drücke Ctrl-G damit sollte sich ein Direktfenster öffnen
    In das Fenster schreibst du:
    ?rc.cells(1,1).address
    Dann solltest du die Zelladresse sehen, welches Blatt es betrifft, siehst du in der Statuszeile.
    Was steht in dieser Zelle?
    Gruess Hansueli

    AW: Debuggen:
    17.05.2013 21:59:31
    Thms
    Guten Abend,
    also, das Blatt: "Ergebnisse u Kennzahlen" hier Zelle J88.
    Deren Inhalt: '=Abschreibung-Sonstige betriebl. Erträge (BKZ)+Zinsen (greift zurück auf Mittelwerte aus GuV
    Liebe Grüße
    Thomas

    AW: Cod Fix
    17.05.2013 22:16:50
    EtoPHG
    Ok Thomas,
    Probier es noch einmal, mit folgender Code-Änderung:
    Ersetze die Zeile
     wsMTL.Cells(lRow, 1) = rC.Cells(1, 1).Text
    

    durch
     wsMTL.Cells(lRow, 1) = rC.Cells(1, 1)
    

    und starte noch einmal das Makro.
    Gruess Hansueli

    AW: Cod Fix
    17.05.2013 22:22:01
    Thms
    Hallo,
    okay! Vielen Dank!
    Ich werde das leider erst morgen probieren können, bin jetzt gleich aus der Bahn ..
    Grüße!!
    Thomas

    AW: Hier wäre noch meine Version,
    18.05.2013 06:59:15
    Klaus
    Hi Hansueli,
    ich hab deinen Code grad gelesen, gewohnt besser als meiner :-) Aber dein Test auf verkettete Zelleninhalte scheint nicht zu funktionieren. im Muster ist EPC-Electricity!B69 auch nach dem Makro noch
    ="Berechnung Baseline Entwicklung " & A2
    Von deiner extrem verkürzten "Google Translate" Funktion bin ich begeistert!
    Grüße,
    Klaus M.vdT.

    Das Gleiche und dasselbe ;-)
    18.05.2013 08:33:03
    EtoPHG
    Hallo Klaus,
    Mit deiner Anmerkung über, dass nicht alle verketten Zellen entdeckt werden, hast du recht:
    Hier ist die Korrektur:
    ' Zelle hat Formel, testen ob Verkettung und ggf. "Fixe Texte" durch ML-Text ersetzen
    vTmp = Split(Right(rC.Cells(1, 1).Formula, Len(rC.Cells(1, 1).Formula) - 1), "&")
    
    Gruess Hansueli

    AW: Hier wäre noch meine Version,
    18.05.2013 08:51:32
    Thms
    Guten Morgen!
    Ich habe den Code entsprechend abgeändert. Es funktioniert wunderbar! wie mein Vorgänger allerdings schon angemerkt hat: bei einigen (sehr wenigen) zellen mit formeln hatves nicht funktioniert. würde es was nützen die Formeln hier zu posten? prinzipiell wäre es bei der geringen Anzahl von Begriffen auch kein Problem das per Hand zu machen. entschuldigt die Rechtschreibung. (handy)
    beste grüße
    Thomas

    AW: Hier wäre noch meine Version,
    18.05.2013 09:14:55
    Thms
    Hallo,
    habe Deinen oberen Nachtrag erst eben gesehen. Entsprechend den Code abgeändert. Jetzt nimmt er einige Begriffe mit Formeln in die Translate Tabelle mit auf, dafür andere, die er vor der Änderung genommen hat, nicht mehr. :)
    Beste Grüße
    Thomas

    AW: Hier wäre noch meine Version,
    18.05.2013 11:20:42
    Klaus
    Hallo Thomas,
    ich glaube ganz fest an Hansueli dass er das auch noch hinbekommt .. wenn du ihm die Fehler genau zeigst. Andererseits: wenn das Tool 95% der Arbeit macht, ist das doch schon eine ganze Menge Wert! Bleiben noch 1-2 Formeln übrig, kannst du diese auch per Hand anpassen und in die Translate-Tabelle eintragen.
    Hansueli,
    ich komm grad nicht dahinter, wie du das mit den vernküfpten Formeln gelöst hast. Du suchst nach "" in der Formel, schon klar. Aus
    ="Hallo" &A2
    wird
    =INDEX("Hallo";mtrans-usw)&A2
    wie verhinderst du, dass daraus im nächsten Durchgang eine Formel-Inception :-) entsteht?
    =INDEX(INDEX("Hallo";mtrans-usw);mtrans-usw)&A2
    Grüße,
    Klaus M.vdT.

    Einmal&so, einmal & so usw.
    18.05.2013 12:30:52
    EtoPHG
    Hallo zusammen,
    Das mit den Verketteten Formeln ist eine Krux. Da kann alles vorkommen:
    Reiner Text
    "Abercrombie&Fitch", "Abercrombie & Fitch", , "Abercrombie & Fitch ", etc...
    Wenn nur Text wie oben steht, wird dieser durch Übersetzungsformel ersetzt. Steht aber Text wie oben (d.h. mit einem enthaltenen &) und eine Verkettung mit einem Bezug, erkennt der Code dies nicht, und lässt das Ganze so stehen. Ich meine das könnte z.Zt. akzeptiert werden ? oder nicht?
    Verkettungen:
    =Verkettung("Text",A1) ... diese Variante wird im Code nicht berücksichtig !
    ="Text" & A1, =" Text" &A1, ="Text "& A1, etc...
    Grundsätzlich trennt der Code bei & und analysiert dann die Einzelelemente. Wenn die Form immer
    ="Text" & " " & A1 wäre (also Blank vor und nach dem &), würde mit der 1. Codeversion alles abgedeckt, ausser & in Textstrings selbst (s.oben).
    Leider kommen alle Varianten in Thomas Tabelle vor und das macht es nicht einfach!
    Mit dieser Variante sollten 98% abgedeckt sein, es sei denn jemand würde noch 2,3... Leerstellen vor dem " oder dem & anhängen ;-(
    Code-Änderung:
                            ' Zelle hat Formel, testen ob Verkettung und ggf. "Fixe Texte" durch ML- _
    Text ersetzen
    sTmp = Right(rC.Cells(1, 1).Formula, Len(rC.Cells(1, 1).Formula) - 1)
    sTmp = Replace(sTmp, " &", "&")
    sTmp = Replace(sTmp, "& ", "&")
    vTmp = Split(sTmp, "&")
    bTermRepl = False
    ...
    
    Gruess Hansueli

    Inception, neee wie denn ?
    18.05.2013 17:45:07
    EtoPHG
    Klaus,
    Was getestest wird sind effektiv "& Zeichenfolgen: Erstens Split mit & und dann Anfang/Ende der Array-Elemente auf ". Diese Kombination kommt aber nach dem Ersetzen durch die Formel nicht mehr vor.
    Gruess Hansueli

    AW: Hier wäre noch meine Version,
    20.05.2013 17:06:01
    Thms
    Hallo,
    das Ganze funktioniert jetzt wirklich super! Wirklich genial!
    Jetzt habe ich aber dennoch 2 Fragen:
    1.
    Wie trage ich die paar Wörter die das Makro nicht von selbst in die Translate-Tabelle einfügt per Hand ein?
    Z.b. steht in einer Zelle die das Makro nicht eingefügt hat: "= "Summe " & B64"
    Was muss ich dann entsprechend in das Translate-Blatt per Hand eintragen, damit das in den Übersetzungen mit aufgenommen wird?
    2.
    Wenn ich in die Sprachspalte "Englisch" alle Zeilen mit "Test" befülle und die Sprache wechsle, dann ändern sich auch einige Zahlen in der Beispieltabelle. Hierzu siehe mein Screenshot.
    Zerhagelt es evtl. doch die Formeln in dem Dokument? Das wäre natürlich übel. Oder woran könnte das liegen?
    Userbild
    Liebe Grüße
    Thomas

    Zerhagelte Formeln?
    21.05.2013 09:43:46
    EtoPHG
    Hallo Thomas,
    Das weitet sich ja immer mehr zu einer 'Auftrags'programmierung aus! Was ist das denn deiner Firma wert?
    Eigentlich solltest du mit all den Erfahrungen in diesem Thread in der Zwischenzeit in der Lage sein, solche 'zerhagelte' Formeln zu analysieren und ggf. uns mitzuteilen, wie den eine solche Formel aussieht. Das Bild sagt mir nichts, weil ich keine solchen Infos in deiner Mappe sehe und aufgrund von #WERT Fehlern, nicht auf eine Formel schliessen kann!
    Zu 1. Bis jetzt gibt es kein Merkmal um 'fixe' Begriffe von der Übersetzung auszuschliessen. Du musst mir aber erklären, warum dein Beispiel ausgeschlossen werden soll. Summe heisst ja in Englisch nicht Summe! Was also wäre denn ein Merkmal um "Fixe Texte"&Formeln oder nur "Fixe Texte" von der Übersetzung auszuschliessen?
    Gruess Hansueli

    OT: Auftragsprogrammierung
    21.05.2013 09:59:36
    Klaus
    Hallo Hansueli,
    Das weitet sich ja immer mehr zu einer 'Auftrags'programmierung aus! Was ist das denn deiner Firma wert?
    Dazu hatte ich hier
    https://www.herber.de/forum/messages/1313538.html
    schon etwas geschrieben, was von Thomas positiv aufgefasst wurde. Ich denke (Achtung! Meine Meinung!), dass wir hier im Forum kein Geld nehmen sollten / dürfen - und wenn, dann sollte Hans einen guten Teil davon abbekommen :-) Wenn etwas über das "schnelle Helfen" weit hinaus geht, so wie hier, erlaube ich mir gerne den Hinweis auf gemeinnütziges Spenden wie im o.g. Link. (Tatsächlich, würde mir jemand für eine Antwort hier sagen wir 100€ überweisen, würd ich die auch spenden. Reich werde ich davon eh nicht.)
    Andererseits bin ich aber kein beruflicher Programmierer und kann es mir leisten, meine Kenntnisse aus Hobby gratis zur Verfügung zu stellen! Ich verstehe jeden professionellen Programmierer, der ab einen gewissen Punkt aussteigt und unterstütze dies Verhalten auch - herber.de ist schließlich kein Selbstbedienungsladen.
    Hansueli, ich bin mit "meiner" Version des Übersetzers bereits recht weit gekommen. Ich habe hier nur keine Updates mehr gepostet, weil deine Version schlicht vielversprechender und besser ist (für den Einsatz bei mir bevorzuge ich meinen eigenen Code, den kann ich nachvollziehen und warten wenn nötig).
    Thomas,
    du siehst selbst, das geht hier ziemlich weit. Von mir sind schon einige Stunden Arbeit geflossen, von Hansueli ebenso. Ein seriöser Auftragsprogammierer nimmt mindestens 40€ pro Stunde, warscheinlich mehr...
    Grüße,
    Klaus M.vdT.

    AW: OT: Auftragsprogrammierung
    22.05.2013 12:28:23
    Thms
    Hallo liebes Forum, Hallo Hansueli, Hallo Klaus M.vdT.,
    zunächst einmal: Sorry für die relativ späte Reaktion auf die obige Antwort!
    Auch ich/wir, die Euch an dieser Stelle nochmal "schriftlich" danken wollen, sehen das ganz genauso!
    Wie ich bereits erwähnt habe, die Spende wird ganz sicher kommen! (Das muss hier aber einen gewissen Prozess durchlaufen, bis das geht)!
    Bzgl. der "zerfetzten" Formeln.
    Da in einigen (wenigen) Zellen die Berechnung abhängig von Text ist (z.B. durch eingabe von "JA/NEIN"), entsteht vermutlich der angesprochene Fehler. Ich begebe mich heute auf die Suche :)
    Jetzt ist nur noch die Frage, wie ich die MLTerms Tabelle evtl. händisch erweitern kann. (Da ja einige - sehr wenige - Begriffe nicht vom Makro erkannt werden, würde ich das gerne per Hand selbst einfügen).
    Beste Grüße
    Thomas

    @Hansueli: russisch, arabisch usw ..
    20.05.2013 08:54:13
    Klaus
    Hallo Hansueli,
    deine Google-Translate-Aufrufen Function (DoTranslate) bringt bei russisch als Zielsprache leider nur Buchstabensalat.
    Die gefundene Version die ich gepostet habe ist viel langsamer und schwerfälliger als deine, aber kann auch russisch darstellen.
    Ich nehme an das ist nur eine Kleinigkeit die mit dem Zeichensatz zu tuen hat, kann das aber selbst nicht verbessern. Meinst du, du bekommst deinen Code auch für nicht-Standardzeichensatz-Sprachen zum laufen?
    Grüße,
    Klaus M.vdT.

    AW: @Hansueli: russisch, arabisch usw ..
    21.05.2013 09:46:43
    EtoPHG
    Hallo Klaus,
    Ja du hast recht. Ich bin noch an der Analyse der diakritischen Zeichen und Fremdzeichensätze.
    Du siehst ja auch am jetzigen Code, dass da einige quick-and-dirty Replaces drin sind, die eigentlich nicht sein müssten, wenn das Ganze richtig erkannt würde. Ich hab aber im Moment keine Zeit, dem im Detail nachzugehen. Werd mich sobald es wieder ein Zeitloch (nicht Wurm-) gibt, damit beschäftigen.
    Gruess Hansueli

    Russisch, Koreanisch....
    21.05.2013 20:50:31
    EtoPHG
    aber den Koran, hab ich noch nicht getestet, Klaus ;-)
    Hier die Ergänzung für Russisch, Koreanisch, Chinesisch etc ;-)
    Ich bin sicher, du kannst das so einbauen.
    Option Explicit
    Sub TestTranslation()
    Dim sTmp, strDE As String, str2Lang As String
    sTmp = Split(InputBox("Eingabe: Wort(e) in Deutsch;ISO-Lang-Code" & vbCrLf & _
    "(siehe: https://developers.google.com/translate" & vbCrLf & _
    "Developers Guide - Using REST" & vbCrLf & _
    "Language Reference)", _
    "Google Translation via XML/DOM", _
    "Ich bin auch nur ein Mensch;en"), ";")
    If UBound(sTmp) = 1 Then
    strDE = sTmp(0)
    str2Lang = sTmp(1)
    End If
    Cells(1, 1) = "DE:"
    Cells(1, 2) = strDE
    Cells(2, 1) = UCase(str2Lang) & ":"
    Cells(2, 2) = doTranslate(strDE, str2Lang)
    End Sub
    ' Function tranlates GERMAN word(s) to a target language using google translator (c)
    Function doTranslate(strDE As String, str2Lang As String) As String
    Dim objDOM As Object
    Dim objDoc As Object
    Dim strURL As String
    strDE = Replace(strDE, "ß", "ss")
    strURL = "http://translate.google.com/translate_t?text=" & strDE & _
    "&langpair=de|" & str2Lang & "&hl=de"
    Set objDOM = CreateObject("MSXML2.XMLHTTP")
    objDOM.Open "POST", strURL, False
    objDOM.setRequestHeader "Content-Type", "text/xml"
    objDOM.send
    Set objDoc = CreateObject("htmlfile")
    objDoc.Body.innerHTML = StrConv(objDOM.responseBody, vbUnicode)
    doTranslate = utf8Conv(objDoc.getElementById("result_box").innertext)
    Set objDoc = Nothing
    Set objDOM = Nothing
    End Function
    ' Function converts a utf8-decoded string to XL-Compatible string
    Function utf8Conv(ByVal sTmp As String) As String
    Dim iX As Integer
    Dim b2(2) As Byte
    iX = 1
    sTmp = sTmp & Chr(0) & Chr(0)
    Do While iX 

    Gruess Hansueli

    AW: Russisch, Koreanisch....
    21.05.2013 21:35:12
    Klaus
    Hi Hansueli,
    Thomas meldet sich wohl nicht mehr? Wir haben ihn wohl verprellt ...
    Danke für dein Update. Da der Thread morgen weg ist, antworte ich noch heute:
    Ich teste das auf jedem Fall und sehe zu, ob ich die von mir genutzte Translate-Funktion gegen deine (bessere) tauschen kann. Grad Russisch ist mir wichtig ...
    By The Way, vielleicht weist du das ja:
    wenn ich einen ActiveX-Button Russisch beschriften will (rechtsclick, properities, caption) landen nur ? im Textfeld. Wenn ich das Russische aus Google-Translate kopiere und nicht in den Button, sondern in eine Zelle (sagen wir A1) einfüge, und dann in VBA "CommandButton1.caption = range("A1").value" mache, ist der Button korrekt russisch beschriftet (ich nehme an, mit arabisch und chinesisch verhält sich das ähnlich, habe das aber nicht getestet).
    Das liegt bestimmt an "utf8-decoded", oder? Was ist "utf8-decoded"?
    Grüße,
    Klaus M.vdT.

    Das müsste eigentlich ENcoded heissen
    21.05.2013 21:47:00
    EtoPHG
    Klaus,
    Zitat: http://de.wikipedia.org/wiki/UCS_Transformation_Format
    UTF-8 kodiert Zeichen mit variabler Byte-Anzahl. Dabei wird ein Unicodezeichen in 1 bis 4 Bytes kodiert. Die Codepoints 0 bis 127, die dem ASCII-Zeichensatz entsprechen, werden in einem Byte kodiert, wobei das höchstwertige Bit stets 0 ist. Mithilfe des achten Bits kann ein längeres Unicode-Zeichen eingeleitet werden, was sich auf 2, 3 oder 4 Byte erstreckt. Damit wird bei auf dem lateinischen Alphabet basierenden Schriften am effizientesten mit dem Speicherplatz umgegangen. Bei Schriften ohne lateinische Zeichen werden jedoch meist 3 Byte benötigt und damit mehr als bei UTF-16.
    Ich kann leider weder russisch, noch chinesisch oder andere Sprachen mit nicht lateinischen Buchstaben, sondern nur ein bisschen VBA ;-)
    Gruess Hansueli

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige