请考虑以下代码
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)。
此代码在Office 2003中运行正常,但在尝试在Office 2007/2010中运行时遇到此问题。我已仔细检查,我试图指定的字体已安装在计算机上。
虽然我只测试了阿拉伯语脚本语言(arabic / urdu / persian等),但我想在处理任何非拉丁语脚本语言时会出现这个问题。
有什么建议吗?似乎是ms office的后续版本中的一个错误。
PS。按照@Steve(.LanguageID = msoLanguageIDArabic
)的建议设置文本框语言无效:(
答案 0 :(得分:0)
Here is a similar case and this solution was given for a Chinese
Font :)并且可用于您知道CharSet
代码以及支持Font Name
的任何给定,因为并非每种字体都支持所有语言字符集。< / p>
在您的情况下,您需要找到您要用于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)
答案 1 :(得分:0)
我自己找到了答案。对于不同的脚本,Name
类中有不同的Font
属性。 Here is a list of all Font
members。就我而言,我必须使用NameComplexScript
属性。结合这一变化,代码就像一个魅力
.Font.NameComplexScript = "someFontName"