8

次のコードを検討してください

With ActivePresentation
    Set sldNewSlide = .Slides.Add(.Slides.Count + 1, ppLayoutBlank)
    With sldNewSlide
    Set shpCurrShape = .Shapes.AddTextbox(msoTextOrientationHorizontal, 25, 50, 50, 200)

        With shpCurrShape
           With .TextFrame.TextRange

              '------------ Below is an ARABIC string
              .Text = ChrW$(&H6A9) & ChrW$(&H64A) & ChrW$(&H641) & " " & ChrW$(&H62D) & ChrW$(&H627) & ChrW$(&H644) & ChrW$(&H643)

              With .Font
                 .Name = "someFontName" '-------------- THIS LINE IS NOT WORKING
                 .Size = 65
              End With

           End With
        End With

    End With
End With

上記のように、アラビア語のテキストのフォントは変更されていません。テキストボックスに英語のテキストが含まれている場合、フォントの変更はうまく機能します。アラビア語と英語のテキストが混在している場合、英語のフォントは変更されますが、アラビア語のテキストはデフォルトのフォント(つまり、Arial)のままになります。

このコードはOffice2003で正常に機能していましたが、Office2007/2010で実行しようとしたときにこの問題が発生しました。指定しようとしているフォントがコンピューターにインストールされていることを再確認しました。

私はアラビア語のスクリプト言語(アラビア語/ウルドゥー語/ペルシア語など)のみでテストしましたが、この問題はラテン文字以外の言語を扱うときに発生すると思います。

助言がありますか?msofficeの新しいバージョンのバグのようです。

PS。@Steve(.LanguageID = msoLanguageIDArabic)によって提案されたようにテキストボックス言語を設定しても効果はありません:(

4

2 に答える 2

2

私は自分で答えを見つけました。クラスには、スクリプトごとに異なるNameプロパティがあります。これがすべてのメンバーのリストです。私の場合、私は財産を使わなければなりませんでした。この変更を組み込むと、コードは魅力のように機能しますFontFontNameComplexScript

.Font.NameComplexScript = "someFontName" 
于 2013-07-03T16:37:35.910 に答える
0

これは同様のケースであり、このソリューションはフォントに与えられましたChinese:)そして、すべてのフォントがすべての言語文字セットをサポートするわけではないので、CharSetコードとサポートを知っているすべての場合に使用できます。Font Name

あなたの場合、あなたはあなたが使用したい文字セットArabicとサポートを見つける必要がありますFont Name(次のサンプルに従ってそれを設定してください)。結果は実行時に表示されます。

UserForm1.TextBox2.Font.Charset = 134    '--CHINESESIMPLIFIED_CHARSET
UserForm1.TextBox2.Font.Name = ChrW(&H5B8B) + ChrW(&H4F53) '-- 宋体 SimSun font

UserForm1.TextBox2.Text = ChrW(37446)
strTxt2 = UserForm1.TextBox2.Text
'notice that ChrW(9246) produces a different character in Chinese
UserForm1.TextBox2.Text = strTxt2 & " " & ChrW(9246)
于 2013-01-22T14:01:25.483 に答える