在excel中通过visualbasic创建的word文档中设置语言、文本方向和对齐方式



我制作了一个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

谢谢,

Ernst

好吧,我有一个变通方法,这只是部分答案。这不是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

结束子

但是,当在新生成的Word文档上运行此程序时,它并没有完成它应该做的事情。有什么解决方法吗?顺便说一句,我可以使用excel-vb向excel-vb生成的文档添加并运行单词宏吗?

最新更新