2012-03-07 7 views

答えて

2

InsertParagraphAfterは、新しい段落を含むように現在の選択範囲を拡張することになっています。したがって、既存の段落の最後に空の選択を作成することから始めた場合は、InsertParagraphAfterを呼び出した後、現在の選択を新しい段落に設定する必要があります。

私は次のコードをテストしていないことに注意してください(私はそれをコンパイルしようとしていません)。

var p1 = document.Paragraphs.Add(ref o);  
// Set the selection to the end of the paragraph. 
document.Range(p1.Range.End, p1.Range.End).Select(); 
p1.Range.InsertParagraphAfter(); 
// InsertParagraphAfter should expand the active selection to include 
// the newly inserted paragraph. 
var newParagraph = document.Application.Selection; 
あなたは最初の段落には比較的新しい段落を追加することによって、これを達成することができ
+0

これは残念ながら、たぶん、あなたがが、私はこれをやっている理由を私を助けることができます:(動作しません。 2つのテーブルを分割して自動的に単語にマージされないようにすることですが、次に、テーブルを別のテーブルの上に直接積み重ねてください。InsertParagraphAfter()を実行すると、2つのテーブルが改行で区切られます新しい段落を修正して、テーブルが互いの上にくるようにします。探しているものを達成する別の方法はありますか? – sooprise

+0

@sooprise:doiを試してくださいWordでマクロを記録してからVBAでコードをチェックアウトしたいときは何をしますか?たぶんそれはあなたにどのようにそれを行うことができるかのヒントを与えることができますか? –

+0

これを試してみましたが、残念ながら私が望む結果が得られませんでした。 – sooprise

0

Paragraph p1 = document.Paragraphs.Add(System.Reflection.Missing.Value); 
p1.Range.Text = "Foo"; 
p1.Range.InsertParagraphAfter(); 

// Add new paragraph relative to first paragraph 
Paragraph p2 = document.Paragraphs.Add(p1.Range); 
p2.Range.Text = "Bar"; 
p2.Range.InsertParagraphAfter(); 

// Add new paragraph relative to the second paragraph 
Paragraph p3 = document.Paragraphs.Add(p2.Range); 
p3.Range.Text = "Baz"; 
+1

MSDNによれば、Paragraphs.Addに鳴音を鳴らすと、範囲の前に段落が作成されます。 BazBarFoo あなたがのように見える何かをしたい場合: フー バー バズが あなたが使用する必要があり、以下: '段落P1 = document.Paragraphs.Add あなたのサンプルの結果は、次のようになります(System.Reflection.Missing.Value); p1.Range.Text = "Foo"; 段落p2 = p1.Range.Paragraphs.Add(System.Reflection.Missing.Value); p2.Range.Text = "Bar"; 段落p3 = p2.Range.Paragraphs.Add(System.Reflection.Missing.Value); p3.Range.Text = "Baz"; ' –