これが可能かどうかはわかりません。実際、Word はエンター キーの押下を新しい段落の作成として処理しているように見えます (私はこのアクションを "\r\n" および "\n" と同等のプログラムとして扱っています)。
次のもので構成される Word でマクロを記録するとします。
- テキスト「One」を入力する
- エンターキーを押す
次の VBA を取得します。
Selection.TypeText Text:="One"
Selection.TypeParagraph
次のような Word 文書を作成した場合 (各単語の後に Enter キーを押します):
One
Two
Three
そのドキュメントの本文は、documents.xml
ファイル内で次のようになります。
<w:body>
<w:p w:rsidR="00BE37B0" w:rsidRDefault="00CF2350">
<w:r>
<w:t>One</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Two</w:t>
</w:r>
</w:p>
<w:p w:rsidR="00CF2350" w:rsidRDefault="00CF2350">
<w:r>
<w:t>Three</w:t>
</w:r>
</w:p>
<w:sectPr w:rsidR="00CF2350" w:rsidSect="001077CC">
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
<w:cols w:space="708"/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>
MSDNから、<w:p>
要素が段落を表していることがわかります。
これに対する解決策は、 Python Docxの例に従うことだと思います:
body.append(paragraph("Hi."))
body.append(paragraph("My name is Alice."))
body.append(paragraph("Let's code"))
または:
for paragraph_text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
body.append(paragraph(paragraph_text.strip()))
編集:
これをさらに調べて、Word で Shift + Enter を押すと、手動で改行 (段落ではない) が追加されChr(11)
ます。Open XML では、これはBreakに変換されます。
Python Docxのファイルを見るとdocx.py
、次のような方法が考えられます (免責事項: テストされていません)。
for text in "Hi. \nMy name is Alice.\n Let's code".split("\n"):
run = makeelement('r')
run.append(makeelement('t', tagtext=text))
run.append(makeelement('br'))
body.append(run)