2010-12-17 5 views
0

Wie kann ich alle Formen in einem Dokument mit C# auswählen.Wählen Sie alle Formen in der Wortautomatisierung mit Cis

Ich ändere gerade die Spracheinstellungen eines Word-Dokuments.

Ich konnte die Sprache ändern, indem Sie alle auswählen, leider wurden nicht alle wie Kopfzeile/Fußzeile, Textfeld oder andere Formen auf dem Dokument ausgewählt. Ich schaffe es irgendwie, die Sprache in Kopf-/Fußzeile zu setzen. Aber ich kann keine Möglichkeit finden, die Sprache für Formen einzustellen.

Ich habe versucht, ein schnelles Makro zu tun, aber ich weiß nicht, was der Index für jede Form im Dokument.

Dies ist das Makro:

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 

Und das ist, was ich Tat in C#, aber es funktioniert nicht ...

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

Wenn versuchen dies mit:

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

Ich hoffe jemand hier kann mir helfen. Oder wenn Sie eine bessere Lösung haben, um die Sprache zu ändern, bitte lassen Sie es mich wissen.Tnx

Antwort

1

Sie hatten eine Antwort auf eine Weile nicht, also hier ist VBA, ich hoffe, Sie können es konvertieren.

Dieser kümmert sich um die Sprache ändern für das gesamte Dokument, einschließlich Kopf- und Fußzeilen und andere „Geschichten“ und Textfelder sowie Formen mit Text.

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 

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

+0

Was ich habe, ist, dass man nicht unbedingt auf der FORMEN Sammlung verlassen kann alle Formen in dem Dokument zurückzukehren. Oft musste ich alle storyRanges, alle Abschnitte, die Kopf- und Fußzeilen für JEDEN Abschnitt und alle Textfelder in allen oben genannten Schritten durchlaufen, um alle möglichen Formen in einem Dokument zu berücksichtigen. Remous Code ist ein guter Anfang. – DarinH

+0

Danke für die Info, ich schaffe es und es funktioniert jetzt. @Drenturure dein richtiges Ich brauche alles in der Geschichte durchlaufenRanges, etc .. Aber es war eine Sache schief gelaufen, nachdem ich die Sprache gewechselt habe. Die Rechtschreibung und Grammatik werden beim Laden des Dokuments nicht automatisch überprüft. Dies betrifft nur den Bereich, den ich konvertiert habe. Ich weiß nicht, warum es passiert, und ich habe einen Artikel für die Einschränkung des Automationsobjektmodus gelesen. Jedenfalls nochmals vielen Dank und ich denke, ich werde es als eine andere Frage veröffentlichen. – ace