7

確かに、私はInteropライブラリの使用に非常に慣れていませんが、人々が常に提供しているように見えるアドバイスは、マクロを記録してvbaコードをチェックすることです。問題は、マクロが私が行っていることを正確に記録しないことです。クイックスタイルをクリックして現在の選択に適用します

私のタスクは非常に単純です。段落にクイックスタイルを適用する必要があります(Microsoft.Office.Interop.Word.Paragraphただし、 set_styleコマンドを使用すると、基本的な書式設定のみが適用され、段落は元のクイックスタイル選択(標準)を維持します。

Remouのアプローチを使用すると、それは私にとってはうまくいきましたが、それは私自身のコードに非常に似ているようで、私はそれを機能させることができません。少しずれているのはオブジェクトモデルの私の理解かもしれません。

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によって提供された答えを私の要件に合わせるにはどうすればよいかを指摘できますか?:)

4

2 に答える 2

8

これは私のために働きます。

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();
于 2012-08-30T09:30:28.783 に答える
0

これは私がそれを理解するのに少し時間がかかりました。以下のコードは私にとっては問題なく機能します。

Microsoft.Office.Interop.Word.Paragraph paraTitle = document.Content.Paragraphs.Add(ref missing);
            paraTitle.Range.Text = ""; //This line does the trick here
            paraTitle.Range.set_Style(WdBuiltinStyle.wdStyleHeading1);
            paraTitle.Range.Text = text;

これにより、フォーマットだけでなく、スタイル全体が適用されます。

于 2019-01-04T08:34:11.980 に答える