如何识别MS Office在Visual Basic中使用的显示语言(即工具栏/菜单)?

时间:2012-07-30 10:36:10

标签: vba office-2007

我有一个从MS Excel电子表格生成MS Word报告的宏。我在报告中使用的样式在宏中用英语编码。

我的一些团队将他们的MS Office显示语言设置为法国(这不奇怪,我在法国工作)。因此,我的宏不起作用,因为样式标题(英文)用于设置样式。例如我告诉MS Word使用样式“List Bullet 1”,而MS Word中的相应样式是“Listeàpuce1”,因此找不到匹配项。

所以我的问题是,如何检测MS Office显示语言,然后以正确的语言设置样式值?

另一个问题是,除了标题之外还有另一种引用样式的方法吗?

致以最诚挚的问候,

科尔姆

1 个答案:

答案 0 :(得分:2)

Colmatairbus,

GSerg的链接提供了Microsoft VBA如何处理语言设置的绝佳参考。

使用VBA,您可以出于各种目的在单词中引用该语言。例如,您可以确定当前语言,将其存储在变量中,并将其显示在消息框中:

    Sub LanguageMessageBox()

        CurrentLanguage = Selection.LanguageID
        MsgBox (CurrentLanguage)

    End Sub

您可以在此处找到languageID列表:http://msdn.microsoft.com/en-us/library/bb213877(v=office.12).aspx

您也可以简单地引用语言本身,特别是如果您不想查看数字或以某种算法方式使用数字:

Sub LanguageMessageBox()

    CurrentLanguage = Selection.LanguageID
    MsgBox (Languages(CurrentLanguage))

End Sub

至于更改语言设置,您可以通过引用languageIDs轻松更改语言设置:

Sub ChangeLanguage()

    ' 1033 is wdEnglishUS
    ' 1034 is wdSpanish        
    ' 1036 is wdFrench

    If Selection.LanguageID = 1033 Then
        Selection.LanguageID = 1034
        Else
        Selection.LanguageID = 1036
    End If

'Set the grammar dictionary for error checking purposes
Set dicGrammar = Languages(Selection.LanguageID).ActiveGrammarDictionary

End Sub