我制作了一个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生成的文档添加并运行单词宏吗?