inhalt aus exc.datei im code einsetzen.

rihab79

Mitglied
hallo

ich habe ein programm, in dem alles textboxen, msgboxen usw. auf deutsch abgelegt sind.
diese boxen, texte usw. sollen nun in weitere sprachen übersetzt werden.(engl, spanisch, ...)
wir haben eine excelliste, in der der deutsche begriff in diese verschiedenen sprachen übersetzt wude. nun soll wenn bspw " englisch" (im menü) gewählt wurde,, auf diese excel datei zugegriffen werden und der gesamte deutsche inhalt mit der englischen überstezung ersetzt werden.
bsp:
im anzupassenden code steht sowas:
Code:
 If FrmGen.language = "G" Then
        frmHead.Name.caption = "Name"
        frmHead.Num.caption = "Nummer: " 
        frmHeader.Waehrung = "Währung: "
  End If
die exceldatei "Übersetzung" liegt im selben verzeichnis wie das programm selber.
nun soll außerdem das ganze dynamisch gestaltet sein, da wohl noch weitere sprachen hinzukommen können. also anstelle von "G" für German dann irgendwie (i) oder so...

ich weiss nicht recht wie ich das bewerkstelligen soll, zumal ich eine blutige anfängerin bin. irgendwie soll auf die exc.datei zugegriffen werden und dann die jeweilige zeile und spalte ausgewählt sein. der inhalt (bspw name oder währung oder nummer) bestimmt die zeile der exc.liste und die sprache eben die zugehörige spalte..

ich hoffe sehr, das ihr mir helfen könnt undmich vor allen dingen verstanden habt...
 
Zuletzt bearbeitet:
Das ist eigentlich ganz einfach, wenn Du in der ersten Spalte z.B. deutsch, in der zweiten Spalte englisch usw. speicherst. Dann musst Du Dir nur noch im Programm eine Variable setzen, die festlegt, welche der Sprachen Du verwenden willst, bei deutsch würde die Variable dann auf 1, bei englisch auf 2 usw. stehen.

Dann baust Du Dir eine Funktion, der Du die jeweilige Zeile übergibst (das ist dann der Inhalt, den Du auf z.B. Deine Buttons oder Labels bringen willst, und diese Funktion gibt Dir dann als Rückgabewert abhängig von der gewünschten Sprache den jeweiligen Text zurück.

Falls das Programm in VB6 programmiert wird, solltest Du Dir jedoch überlegen, ob eine Exceldatei unbedingt sein muss, da der Zugriff von VB6 auf Excel relativ langsam ist. Außerdem wird dabei vorausgesetzt, dass auf dem Rechner, auf dem Dein Programm läuft, auch Excel installiert ist. Da wäre eine Datenbank oder aber auch eine Resourcendatei deutlich schneller.

Grüsse
ronaldh
 
hey..mmh, ich habe keine ahnung wie ich das mit der funktion aussehen soll..kannst du mir ungefähr zeigen, wie das im code aussieht? für dich ist das trivial.. ich hab erst noch so wenig gemacht mit programmieren.. sd ich nun vor einem riesen fragezeichen stehe..wie sieht denn der zugriff auf die datei aus?
wäre echt lieb..
was die excel datei betrifft, die ist schon fest vorgegeben. ich werde das aber mal weitergeben, ob wir nicht doch vielleicht eine db anstele der excel nutzen..
danke im voraus
 
Zuletzt bearbeitet:
Mit welcher VB-Version arbeitest Du denn?

Mit VB6 könnte das so aussehen (ich hab das eben nur schnell hingeschrieben, aber nicht getestet, sollte aber weitgehend funktionieren):
Code:
Public SpracheGewaehlt As Integer
Private xlApp As Excel.Application
Private xlBook As Excel.Workbook
Private xlSheet As Excel.Worksheet

Public Function OpenSprachdatei(SprachDatei As String) As Boolean
   Set xlApp = New Excel.Application
   xl.Visible = False
   Set xlBook = xlApp.Workbooks.Open(SprachDatei)
   Set xlSheet = xlApp.ActiveWorkbook.Sheets(1)
   
End Function

Public Sub CloseSprachdatei
   xlBook.Close
   xlApp.Quit
   Set xlApp = Nothing
   Set xlBook = Nothing
   Set xlSheet = Nothing
End Sub

Public Function GetText(Zeile As Long) As String
' Zeile: Der gewünschte Text
' SpracheGewaehlt: Muss irgendwo im Programm gesetzt werden

   GetText = Trim$(xlSheet.Cells(Zeile, SpracheGewaehlt).Value)

End Function

In diesem Beispiel müsste in Deinem Programm die Sprache gewählt werden, und davon abhängig z.B. für deutsch die Variable "SpracheGewaehlt" auf 1, für englisch auf 2 usw. gesetzt werden. Dann müsste in der Exceltabelle natürlich der deutsche Text in Spalte 1, der englische in Spalte 2 stehen.

Bei Programmstart muss dann die Open-Funktion für die Sprachdatei aufgerufen werden, bei Programmende die Close-Funktion. Wenn man die Datei jedes mal beim Lesen eines Textes öffnen würde, wäre das Programm unerträglich langsam, da jeses mal Excel im Hintergrund geladen würde.

So ist jedoch Excel ständig offen. Das hat jedoch auch seine Nachteile, wenn der Anwender Excel parallel zu Deiner Anwendung öffnet, um irgend etwas zu bearbeiten. Da kann es durchaus zu Fehlfunktionen kommen. Auch dies ist ein Grund, warum eine Exceldatei für solche Anwendungen einfach ungeeignet ist. Excel ist nun mal eine Tabellenkalkulation und keine Datenbank. Ich verspreche Dir, dass dies in der Praxis zu großen Problemen führen wird...

Liebe Grüsse
ronaldh
 
hallo ronald,
vielen vielen vielen lieben dank.
und nicht nur für den code, sondern auch für die weiteren tipps (anstelle der excel-tabelle eine db einführen) . ich werde mich drum bemühen, dies abzuändern! wirklich super lieb von dir! habe es noch nicht getestet, aber gebe dann noch mal bescheid! lg rihab
 
Zurück