2012-08-30 66 views
7

我承認,我是很新的使用互操作庫,但建議人們似乎總是給被,錄製宏,並檢查了VBA代碼。問題是,宏不記錄正是我在做什麼:點擊一個快速樣式將其應用到當前選擇如何在C#中應用Word Quick Style - 不僅僅是簡單的格式,而是整個樣式?

我的任務很簡單:我需要一個快速樣式應用到一個段落(Microsoft.Office.Interop.Word.Paragraph。然而,使用set_style命令,只適用基本格式,段落保持它原來的快速風格選擇(普通)。

使用Remou的做法,雖然它爲我工作,但它似乎非常相似,我自己的代碼,我不能讓它工作,我認爲這可能是我是有點過了objectmodel的理解。

public void AddParagraph(string text, string styleName = null) 
{ 
    Paragraph paragraph = _document.Content.Paragraphs.Add(); 
    if (styleName != null) 
    { 
    paragraph.Range.set_Style(_document.Styles[styleName]); 
    } 

    paragraph.Range.Text = text; 
    paragraph.Range.InsertParagraphAfter(); 
} 

然後我用例如: AddParagraph("A title", "Heading 1");,但使用上述包裝打造我的文檔的結果是,沒有完整的樣式應用,只有字體,顏色,大小和粗體/斜體。

我正在使用我自己的.dotx文件,使用我自己定義和命名的樣式,但只是從Remou中將代碼複製到我自己的模板中,所以我不認爲這是問題,並且使用該代碼我無法瞭解如何在每個自己的樣式中添加多個段落。

任何人都可以指出什麼是錯我的方法,或者至少我怎麼可以通過Remou工作,爲我的要求提供的答案嗎? :)

回答

7

這對我的作品。

Word.Application _wordApp = new Word.Application(); 
Word.Document oDoc = _wordApp.Documents.Add(); 
_wordApp.Visible = true; 
_wordApp.Selection.TypeText("Heading"); 
oDoc.Paragraphs[1].set_Style(Word.WdBuiltinStyle.wdStyleHeading2); 

當你說

paragraph.Range.Text = text + paragraph.Range.Text; 

你得到更多的段落比你想象的。我想你需要:

paragraph.Range.Text = text; 

嘗試:

Paragraph paragraph = _document.Content.Paragraphs.Add(); 
paragraph.Range.Text = text; 

if (styleName != null) 
{ 
    paragraph.set_Style(_document.Styles[styleName]); 
} 

paragraph.Range.InsertParagraphAfter(); 
+0

由於Remou,我已經更新了我的問題,因爲你讓我有點接近,但不是一路人。我可能會想這是一個錯誤的方式。 –

+0

...我很沮喪。改變應用樣式和文本的順序是它做了什麼,'+ paragraph.Range.Text;'部分是我錯誤嘗試和複製的東西。感謝您的幫助! :) –

相關問題