3

MSExcelスプレッドシートからMSWordレポートを生成するマクロがあります。レポートで使用するスタイルは、マクロでは英語でコード化されています。

私のチームの中には、MS Officeの表示言語をフランスに設定しているところもあります(これは奇妙なことではありません。私はフランスで働いています)。したがって、スタイルタイトル(英語)がスタイルの設定に使用されるため、私のマクロは機能しません。たとえば、MSWordにスタイル「ListBullet1」を使用するように指示していますが、MS Wordの対応するスタイルは「Listeàpuce1」であるため、一致するものは見つかりません。

だから私の質問は、MS Officeの表示言語を検出して、正しい言語でスタイル値を設定するにはどうすればよいですか?

別の質問は、タイトル以外にスタイルを参照する別の方法はありますか?

よろしくお願いします、

コルム

4

1 に答える 1

2

コルマテアバス、

GSergのリンクは、MicrosoftVBAが言語設定を処理する方法への優れたリファレンスを提供します。

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
于 2012-07-30T14:59:55.087 に答える