2010-12-17 42 views
0

如何用C#選擇文檔中的所有形狀。用C sharp選擇文字自動化中的所有形狀

我正在更改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 

這是我行爲在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

你還沒有在一段時間的答案,所以這裏是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

+0

什麼我發現是,你不一定能依靠Shapes集合到文檔中返回所有的形狀。通常,我必須遍歷所有storyRanges,所有部分,FOR EACH部分的頁眉和頁腳,以及上述所有文本框,以便說明文檔中所有可能的形狀。 remou的代碼是一個很好的開始。 – DarinH 2010-12-17 15:19:47

+0

感謝您的信息,我設法將其轉換成現在的工作狀態。 @破壞你的正確我需要遍歷storyRanges等等。但是在我改變語言之後出現了一件事情。即使在加載文檔時,拼寫和語法也不會自動檢查,這僅影響我轉換的範圍。我不知道爲什麼會發生,我已經閱讀了一些關於自動化對象模式限制的文章。無論如何,再次感謝,我想我會把它作爲另一個問題。 – ace 2010-12-20 03:16:15

相關問題