1

我制作了一个 excel Visual Basic 脚本,该脚本从 Excel 表中获取数据,并在单词表中为每一行生成一个段落。文档的默认语言是希伯来语,文本右对齐,方向从右到左。对于段落中的一个(最后)行,我想将语言设置为英语、从左到右的方向以及右对齐。然后,将下一段的第一行改回希伯来语,方向从右到左,右对齐。当在段落的最后一行用 word 录制宏时,按 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

谢谢,

恩斯特

4

1 回答 1

0

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

搜索所有出现的^13[!^13]@x*^13,然后进行语言、对齐和方向更改。将其记录为 word 中的宏时,我得到以下信息:

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 生成的文档中添加和运行 word 宏吗?

于 2011-06-14T06:38:08.867 回答