Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Menübefehle je nach Sprachversion

Menübefehle je nach Sprachversion
18.04.2006 09:18:13
tomtom
Hallo Excel-Fans
Ich habe folgendes Problem beim Schreiben einer sprachunabhängigen Applikation: ich habe die Speichern-Funktionen umprogrammiert, so dass beim Aufruf der Funktionen "Speichern" und "Speichern unter..." meine eigene Prozedur abläuft. Das funktioniert problemlos. Nun muss ich das Ganze aber auf vier Sprachen lauffähig machen: deutsch, französisch, italienisch, englisch. Unabhängig von der Sprachversion, die der Benutzer eingerichtet hat, soll es eben funktionieren.
Muss ich nun die Menübefehle tatsächlich in die entsprechenden Sprachen übersetzen oder gibt es da einen direkteren Weg?
Wenn ich sie übersetzen muss: weiss jemand wie die betreffenden Menübefehle in den Sprachen französisch und italienisch aussehen? Kennt jemand eine Uebersicht über alle Menübefehle in den verfügbaren Sprachen?
Nachfolgend mein implementierter Code:

Private Sub workbook_open()
Dim objLangSet As Object
Set objLangSet = Application.LanguageSettings
'"Speichern" und "Speichern unter" im Menue Datei umleiten:
'German - Germany, Austria, Liechtenstein, Luxembourg, Switzerland
If objLangSet.LanguageID(msoLanguageIDUI) = 1031 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 3079 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 5127 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 4103 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 2055 Then
With Application.CommandBars("Worksheet Menu Bar").Controls("Datei")
.Controls("Speichern").OnAction = "Save_Spezial"
.Controls("Speichern unter...").OnAction = "Save_spezial"
End With
End If
'French - France, Belgium, Canada, Luxembourg, Switzerland
If objLangSet.LanguageID(msoLanguageIDUI) = 1036 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 2060 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 3084 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 5132 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 4108 Then
With Application.CommandBars("Worksheet Menu Bar").Controls("XXXX")
.Controls("XXXX").OnAction = "Save_Spezial"
.Controls("XXXX...").OnAction = "Save_spezial"
End With
End If
'Italian - Italy, Switzerland
If objLangSet.LanguageID(msoLanguageIDUI) = 1040 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 2064 Then
With Application.CommandBars("Worksheet Menu Bar").Controls("XXXX")
.Controls("XXXX").OnAction = "Save_Spezial"
.Controls("XXXX...").OnAction = "Save_spezial"
End With
End If
'English - Australia, Belize, Canada, Caribbean, Ireland, Jamaica, New Zealand, Phillippines, South Africa, Trinidad, United Kingdom, United States
If objLangSet.LanguageID(msoLanguageIDUI) = 3081 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 10249 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 4105 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 9225 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 6153 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 8201 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 5129 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 13321 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 7177 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 11273 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 2057 Or _
objLangSet.LanguageID(msoLanguageIDUI) = 1033 Then
With Application.CommandBars("Worksheet Menu Bar").Controls("File")
.Controls("Save").OnAction = "Save_Spezial"
.Controls("Save as...").OnAction = "Save_spezial"
End With
End If
Set objLangSet = Nothing
End Sub

Herzlichen Dank für eure Hilfe!
Gruss tomtom

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 10:00:22
tomtom
Hallo zusammen
Nachfolgend ein eigener Lösungsvorschlag. Ich bin nur nicht sicher, ob das in allen Sprachversionen wasserdicht ist - sind die entsprechenden Elemente immer an derselben Position?
Hier mein Code:

Private Sub workbook_open()
Dim objLangSet As Object
Set objLangSet = Application.LanguageSettings
'"Speichern" und "Speichern unter" im Menue Datei umleiten:
With Application.CommandBars("Worksheet Menu Bar").Controls(1) '"Datei"
.Controls(4).OnAction = "Save_Spezial" '"Speichern"
.Controls(5).OnAction = "Save_spezial" '"Speichern unter..."
End With
Set objLangSet = Nothing
End Sub

Dank und Gruss
tomtom
Anzeige
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 11:51:01
u_
Hallo,
die Elemente sind nicht zwingend an dieser Position.
Suche sie mit FindControl. Die IDs sind 3 und 748.
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 12:13:17
tomtom
Hallo
Besten Dank für den Hinweis.
Da ich aber nicht weiss, wie die Texte in den einzelnen Sprachversionen lauten (was heisst "Speichern als..." in der Sprachversion "French-Belgium" oder in "English-South Africa") kann ich die IDs mit FindControl auch nicht suchen ...
Gruss
tomtom
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 12:13:32
tomtom
Hallo
Besten Dank für den Hinweis.
Da ich aber nicht weiss, wie die Texte in den einzelnen Sprachversionen lauten (was heisst "Speichern als..." in der Sprachversion "French-Belgium" oder in "English-South Africa") kann ich die IDs mit FindControl auch nicht suchen ...
Gruss
tomtom
Anzeige
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 13:53:09
u_
Hallo,
wieso das?
Du muss einfach die ID angeben um das Control "Speichern" zu suchen und diesem dann die neue OnAction-Eigenschaft zuzuweisen.
Ungefähr so:
Set myCtrl=commandbars.findcontrol(ID:=3)
myCtrl.OnAction="Makro1"
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 14:01:35
tomtom
Hallo.
Das würde bedeuten, dass die IDs für die jeweiligen Funktionen (z.B. "Speichern unter...") in allen Sprachversionen immer dieselben sind. Ist das so?
Gruss
tomtom
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 15:12:15
u_
Hallo,
vermutlich ja. Weiß ich aber nicht. Zumindest ist die Wahrscheinlichkeit höher als bei den Bezeichnungen ;-)
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 16:39:19
tomtom
Ok.
Werde diesen Weg weiterverfolgen.
Dank und Gruss
tomtom
AW: Nachtrag zu meiner Frage mit Lösungsvorschlag
18.04.2006 16:52:02
tomtom
Und für alle die's interessiert: ich habe das Problem nun also wie folgt gelöst (und hoffe einfach, dass die IDs in allen Sprachversionen dieselben sind):

Private Sub workbook_open()
'"Speichern" und "Speichern unter" umleiten:
Application.CommandBars.FindControl(ID:=3).OnAction = "Save_Spezial" '"Speichern"
Application.CommandBars.FindControl(ID:=748).OnAction = "Save_Spezial" '"Speichern unter..."
End Sub

Grüsse
tomtom

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige