2017-07-11 5 views
2

私は主にMS Wordオートメーションの目的のためにC#の学習を始めました。 Interop.Wordを使用して、どのように2つのイタリック体で単語 "1 2 3"を含む行を追加できますか?私が得ることができる最も近いものは、次のようなものです。Interop.Wordのイタリックインラインワード

私が必要とする方法については、私は多くのことを試みましたが、どれも働いていませんでした。 MSDNのドキュメントは非常に読みにくく、多くの重要な詳細は省略しています。

EDIT:最終的には、すべての単語に対して新しい範囲オブジェクトを作成することで、効果を上げました。これは私が想像と同じくらい醜いですが、少なくともとして、それは動作します:

 Word.Range rng = word_doc.Range(para.Range.End - 1, para.Range.End); 

     rng.Text = "one "; 
     Console.WriteLine(rng.Start); 
     Console.WriteLine(rng.End); 

     rng = word_doc.Range(rng.End - 1, rng.End); 
     rng.Text = "two"; 
     rng.Font.Italic = 1; 
     Console.WriteLine(rng.Start); 
     Console.WriteLine(rng.End); 

     rng = word_doc.Range(rng.End - 1, rng.End); 
     rng.Text = " three"; 
     rng.Font.Italic = 0; 
     Console.WriteLine(rng.Start); 
     Console.WriteLine(rng.End); 
     para.Range.InsertParagraphAfter(); 
+0

うわー、 'para.Range.Font.Italic = 1;'はそれを行うべきですが、それはどうやって動作するのでしょうか? 'Console.WriteLine'を使用して、イタリック体としてのテキストを表示しません...あなたはそれを認識していますか? –

+0

問題が何であるかは不明です。あなたのコードは 'Console.WriteLine'以外の部分は' Word'とは関係がありません。 –

+0

Console.WriteLineは単純なログ用です。上記のコードが意図したとおりに動作しない場合、「3」だけが出力されます。 「1」と「2」は無効になります。 – user2341726

答えて

1

これは私が得ることができる最も近い、私はあなたのために作られたこのコードの主な問題は、それが戻ってテキストを追加していないということですインラインではなく、見つかった単語ごとに新しい行を追加します。うまくいけば、このコードでは、プログラムを使ってワード文書を作成する方法をいくつか紹介します。

Document extendedDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument); 

Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection; 

Word.Paragraph para; 
para = extendedDocument.Content.Paragraphs.Add(ref oMissing); 
para.Range.SetRange(currentSelection.Range.Start, currentSelection.Range.End); 

string string1 = "one two three"; 
string split1 = " "; 
string match1 = "two"; 

string[] elements = Regex.Split(string1, split1); 

foreach (var m in elements) 
{ 
    if (m.Equals(match1)) 
    { 
     para.Range.Text = m + " "; 
     para.Range.Font.Italic = 1; 
    } 
    else 
    { 
     para.Range.Text = m + " "; 
     para.Range.Font.Italic = 0; 
    } 

    para.Range.InsertParagraphAfter(); 
} 

編集:良い週末を過ごしてください!私は週末に自分のSOの受信トレイをチェックしようとしますが、月曜日まで質問に返信することはできません。

関連する問題