使用C sharp在字自动化中选择所有形状

时间:2010-12-17 09:46:46

标签: c# ms-word office-interop

如何使用C#选择文档中的所有形状。

我目前正在更改word文档的语言设置。

我能够使用select all更改语言,遗憾的是并非所有选择都像页眉/页脚,文本框或文档上的任何形状。我以某种方式管理在页眉/页脚中设置语言。但我找不到设置形状语言的方法。

我试过做一个快速宏,但我不知道文档中每个形状的索引是什么。

这是宏:

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

这就是我在C#中的表现,但它不起作用......

        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

1 个答案:

答案 0 :(得分: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