Настройка языка, направления текста и выравнивания в текстовом документе, созданном Visual Basic в Excel - PullRequest
0 голосов
/ 13 июня 2011

Я создал скрипт Visual 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

1 Ответ

0 голосов
/ 14 июня 2011

Хорошо, у меня есть обходной путь, это только частичный ответ. Это не решение в 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?

...