在excel中设置由visual basic创建的word文档中的语言,文本方向和对齐方式

时间:2011-06-13 12:20:56

标签: vba excel-2003 bidirectional word-2003

我制作了一个excel visual basic脚本,它从excel表中获取数据,并在每行的单词表中生成一个段落。该文档的默认语言是希伯来语,文本右对齐,方向从右到左。 对于段落中的一行(最后一行),我想将语言设置为英语,从左到右设置方向,以及右对齐。然后,对于下一段中的第一行,改回希伯来语,从右到左,右对齐。 当在段落的最后一行记录单词中的宏时,按住home,shift end,单击工具栏上的图标以根据需要更改语言,方向和对齐方式,我得到:

Sub test()
    Selection.HomeKey Unit:=wdLine
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Application.Keyboard (2057)
    Selection.LtrPara
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End Sub

让我感到惊讶的一件事是,改变语言就像我使用键盘一样,而不是像对象的属性一样,就像方向和对齐一样。 如何将其翻译为excel visual basic?有问题的行目前使用以下内容添加:

With f
    .Content.InsertAfter Format(a, "standard") & " x " & Format(b, "#,##0.000") & " x " & Format(c, "#,##0.000") & " / " & Format(d, "#,##0.000") & " = " & Format(e, "standard")
    .Content.InsertParagraphAfter
End With

谢谢,

恩斯特

1 个答案:

答案 0 :(得分:0)

好的,我有一个解决方法,这只是一个部分答案。这不是Excel visual basic中的解决方案,而是Word中的解决方案:

搜索^13[!^13]@x*^13的所有出现,然后进行语言,对齐和方向更改。 当将其作为单词中的宏录制时,我得到以下内容:

Sub Macro1()

Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^13[!^13]@x*^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
End With
Selection.LtrPara
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^13[!^13]@x*^13"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
End With

End Sub

但是当在新生成的Word文档上运行它时,这不会做它应该做的事情。有关解决方法的任何想法吗?顺便说一下,我可以使用excel vb为excel vb生成的文档添加和运行word宏吗?