これを達成するためにマクロを使用するには、ドキュメント内の各段落をチェックし、それが "ヘッダー"スタイルかどうかを確認する必要があります。その場合は、最初のタブストップの値を選択して、次の段落のインデントとして設定します。
UPDATE1:以下のコードの以前のバージョンはDocument
レベル最初のタブストップに段落を設定し、かつ正確にHeading
スタイルにタブストップセットをつかむませんでした。以下のコードを更新すると、それぞれHeading
インデントタブストップが正確に決定されます。
アップデート2:私はこの最初の文書に示されているに使用サンプルテキスト元:
自動的に前の見出しのタブレベルに最初の行のインデントされた実行コード最初の例から元Sub
:
Option Explicit
Sub SetParaIndents1()
Dim myDoc As Document
Set myDoc = ActiveDocument
Dim para As Paragraph
Dim firstIndent As Double 'value in "points"
For Each para In myDoc.Paragraphs
If para.Style Like "Heading*" Then
firstIndent = myDoc.Styles(para.Style).ParagraphFormat.LeftIndent
Debug.Print para.Style & " first tab stop at " & _
firstIndent & " points"
Else
Debug.Print "paragraph first line indent set from " & _
para.FirstLineIndent & " to " & _
firstIndent
para.FirstLineIndent = firstIndent
End If
Next para
'--- needed to show the changes just made
Application.ScreenRefresh
End Sub
、その結果はLに見えますIKEこの(赤線はアラインメントを表示するために手動で追加):
あなたが見出しスタイルと整列してインデント段落全体をしたい場合は、コードはこれのように変更されます。
Option Explicit
Sub SetParaIndents2()
Dim myDoc As Document
Set myDoc = ActiveDocument
Dim para As Paragraph
For Each para In myDoc.Paragraphs
If para.Style Like "Heading*" Then
'--- do nothing
Else
para.Indent
End If
Next para
'--- needed to show the changes just made
Application.ScreenRefresh
End Sub
し、得られたテキスト次のようになります。
ありがとうございます。私はあなたのコードを実行し、それは次の段落の最初の行のヘッダー(約2インチ程度)のテキストを超えて最初の行方法をインデントしましたが、段落の残りの部分はそのまま残りました。正しい字下げを設定し、段落全体に影響を与えるように改訂することはできますか? – Absinthe
'Paragraph'を' Indent'に伝えるだけで、前の見出しスタイルのタブストップを自動的にピックアップします。例で使用したスタイルは組み込みの「見出し1」、「見出し2」、「見出し3」でした。 – PeterT
これは私のためには機能しませんでしたが、あなたの説明よりも私が与えられた文書のひどい状態のために推測しています。とても徹底してくれてありがとう、私は多くを学んだ。私はすべての段落を反復し、ヘッダーとカスタムスタイルで一致させるためにインデントを強制して解決しました。 – Absinthe