Выделите все фигуры в автоматизации слов с помощью до-диез

Как я могу выбрать все фигуры в документе с помощью С#.

В настоящее время я меняю языковые настройки документа Word.

Я смог изменить язык, выбрав все, к сожалению, не все были выбраны, например, верхний/нижний колонтитул, текстовое поле или любые фигуры в документе. Мне как-то удается установить язык в верхнем/нижнем колонтитуле. Но я не могу найти способ установить язык для фигур.

Я попытался сделать быстрый макрос, но я не знаю, какой индекс для каждой фигуры в документе.

Это макрос:

ActiveDocument.Shapes("Text Box 4").Select
ActiveDocument.Shapes.Range(Array("Text Box 4", "Rectangle 7")).Select
ActiveDocument.Shapes.Range(Array("Text Box 4", "Rectangle 7", _
    "Text Box 10")).Select
ActiveDocument.Shapes.Range(Array("Text Box 4", "Rectangle 7", _
    "Text Box 10", "Rectangle 11")).Select
Selection.LanguageID = wdEnglishUK

И это то, что я делаю на С#, но это не работает...

        wordApp.ActiveDocument.Shapes.SelectAll();
        wordApp.Selection.LanguageID = Word.WdLanguageID.wdEnglishUK;

Если попытаться использовать это:

wordApp.ActiveDocument.Shapes.Range(??).Select; //I don't know what should I put inside the range
wordApp.Selection.LanguageID = Word.WdLanguageID.wdEnglishUK;

Я надеюсь, что кто-то здесь может мне помочь. Или, если у вас есть лучшее решение для смены языка, сообщите мне об этом.Tnx


person ace    schedule 17.12.2010    source источник


Ответы (1)


У вас давно не было ответа, так что вот VBA, надеюсь, вы сможете его преобразовать.

Этот отвечает за изменение языка для всего документа, включая верхние и нижние колонтитулы и другие «истории», а также текстовые поля, а также фигуры с текстом.

Sub langconvPL()
Dim mystoryrange As Range
For Each mystoryrange In ActiveDocument.StoryRanges
mystoryrange.LanguageID = wdPolish
mystoryrange.NoProofing = False
Next mystoryrange

scount = ActiveDocument.Shapes.Count

For x = 1 To scount
ActiveDocument.Shapes(x).Select
If ActiveDocument.Shapes(x).TextFrame.HasText = True Then
ActiveDocument.Shapes(x).TextFrame.TextRange.Select
Selection.LanguageID = wdPolish
End If
Next x
End Sub

Из: http://www.proz.com/forum/office_applications/31516-how_to_change_textbox_language_in_a_word_document.html

person Fionnuala    schedule 17.12.2010
comment
Я обнаружил, что вы не обязательно можете полагаться на коллекцию SHAPES для возврата ВСЕХ фигур в документе. Часто мне приходилось перебирать все диапазоны историй, все разделы, верхние и нижние колонтитулы ДЛЯ КАЖДОГО раздела и все текстовые поля во всем вышеперечисленном, чтобы учесть все возможные формы в документе. Код remou — хорошее начало. - person DarinH; 17.12.2010
comment
Спасибо за информацию, мне удалось преобразовать его, и теперь он работает. @drventure, вы правы, мне нужно повторить все сюжетные диапазоны и т. Д. Но после того, как я изменил язык, что-то пошло не так. Орфография и грамматика не проверяются автоматически даже при загрузке документа, это влияет только на диапазон, который я преобразовал. Я не знаю, почему это происходит, и я прочитал статью об ограничении режима объекта автоматизации. В любом случае, еще раз спасибо, и я думаю, что опубликую это как еще один вопрос. - person ace; 20.12.2010