2016-08-23 1 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

매크로를 사용하여이를 수행하려면 문서의 각 단락을 확인하고 "머리글"스타일인지 확인해야합니다. 그렇다면 첫 번째 탭 중단 지점의 값을 선택하여 다음 단락의 들여 쓰기로 설정하십시오.

갱신 1 : 코드의 이전 버전은 아래의 Document 수준의 첫 번째 탭 정지에 단락을 설정하고 정확하게 Heading 스타일의 탭 위치 설정을 잡아하지 않았다. 아래의 코드 업데이트는 각 Heading 들여 쓰기 탭 스톱을 정확하게 결정합니다.

UPDATE2 : I이 첫 번째 문서에 도시에 사용 된 샘플 텍스트 원본 :

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 보이는 당신은 제목 스타일로 정렬 들여 쓰기 전체 단락을 원하는 경우에 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

'단락'을 '들여 쓰기'로 설정하면 앞의 제목 스타일의 탭 중단 지점이 자동으로 선택됩니다. 예제에서 사용 된 스타일은 기본 'Heading 1', 'Heading 2'및 'Heading 3'입니다. – PeterT

+0

이것은 나에게 효과가 없었지만 나는 당신의 설명보다는 내가받은 문서의 끔찍한 상태 때문에 그것을 추측하고있다. 너무 철저하게되어 줘서 고마워. 많이 배웠어. 모든 단락을 반복하고 맞춤 스타일을 통해 헤더와 일치하도록 들여 쓰기를 수행하여이를 해결했습니다. – Absinthe