2016-08-23 5 views
1

段落を番号付き見出しのテキスト部分だけに揃えるにはどうすればよいですか?例えば:Word VBAと段落インデントを見出しテキストに一致させる

1.1.2 This Is A Numbered Heading 
     This is the aligned text I'm trying to achieve 
This is aligned to the numbers not the text 

2.4 This Is Another Example 
    This is where the text should be 

私はCharacterUnitLeftIndent、CharacterUnitFirstLineIndent、FirstLineIndentなどの特性を意識していたが、数時間の実験&をオンラインで検索した後、プログラムでこれを達成する方法を見つけ出すことはできません。私は見出しのスタイルをテストする方法と次の段落を参照する方法を知っているので、インデントを正しく取得する方法を知る必要があります。

答えて

1

これを達成するためにマクロを使用するには、ドキュメント内の各段落をチェックし、それが "ヘッダー"スタイルかどうかを確認する必要があります。その場合は、最初のタブストップの値を選択して、次の段落のインデントとして設定します。

UPDATE1:以下のコードの以前のバージョンはDocumentレベル最初のタブストップに段落を設定し、かつ正確にHeadingスタイルにタブストップセットをつかむませんでした。以下のコードを更新すると、それぞれHeadingインデントタブストップが正確に決定されます。

アップデート2:私はこの最初の文書に示されているに使用サンプルテキスト元:

enter image description here

自動的に前の見出しのタブレベルに最初の行のインデントされた実行コード最初の例から元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この(赤線はアラインメントを表示するために手動で追加): enter image description here

あなたが見出しスタイルと整列してインデント段落全体をしたい場合は、コードはこれのように変更されます。

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 

し、得られたテキスト次のようになります。 enter image description here

+0

ありがとうございます。私はあなたのコードを実行し、それは次の段落の最初の行のヘッダー(約2インチ程度)のテキストを超えて最初の行方法をインデントしましたが、段落の残りの部分はそのまま残りました。正しい字下げを設定し、段落全体に影響を与えるように改訂することはできますか? – Absinthe

+0

'Paragraph'を' Indent'に伝えるだけで、前の見出しスタイルのタブストップを自動的にピックアップします。例で使用したスタイルは組み込みの「見出し1」、「見出し2」、「見出し3」でした。 – PeterT

+0

これは私のためには機能しませんでしたが、あなたの説明よりも私が与えられた文書のひどい状態のために推測しています。とても徹底してくれてありがとう、私は多くを学んだ。私はすべての段落を反復し、ヘッダーとカスタムスタイルで一致させるためにインデントを強制して解決しました。 – Absinthe

関連する問題