Word VBA Tabstop 잘못된 행동
문제
다음 VBA 코드가 있습니다
Private Sub CreateQuery_Click()
Dim doc As Document
Dim i As Integer
Set doc = ActiveDocument
i = doc.Paragraphs.Count
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
For j = 0 To 1000
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
With doc.Paragraphs(i)
.Range.Font.Italic = True
.Range.ListFormat.ApplyBulletDefault
.Indent
.Indent
.TabStops.Add Position:=CentimetersToPoints(3.14)
.TabStops.Add Position:=CentimetersToPoints(10)
.TabStops.Add Position:=CentimetersToPoints(11)
End With
For k = 0 To 10
With doc.Paragraphs(i)
.Range.InsertAfter "testState" & vbTab & CStr(doc.Paragraphs(i).Range.ListFormat.CountNumberedItems) & vbTab & CStr(doc.Paragraphs.Count)
.Range.InsertParagraphAfter
End With
i = i + 1
Next
i = doc.Paragraphs.Count
With doc.Paragraphs(i)
.Range.ListFormat.ApplyBulletDefault
.TabStops.ClearAll
.Outdent
.Outdent
End With
Next
i = doc.Paragraphs.Count
doc.Paragraphs(i).Range.InsertParagraphAfter
i = i + 1
End Sub
기본적 으로이 코드는 특정 형식으로 N 번호를 인쇄합니다.
- 총알 목록
- 들여 쓰기
- 그리고 Tabstops
(원천: lans-msp.de)
이 코드는 임의의 라인 수에 완벽하게 작동하지만 어느 시점에서는 탭 스톱 적용을 중지합니다.
나는 10 줄마다 형식을 재설정하지 않으면 코드가 영원히 작동한다는 것을 알고 있습니다 (실제로?!?). 그러나 10 라인 브레이크마다 필수입니다.
모든 것이 분해되는 정확한 선 번호는 RAM의 양에 따라 다릅니다. 1GB가있는 내 작업 컴퓨터에서는 약 800 줄까지 작동합니다 (보시다시피). 4GB가있는 집에있는 내 컴퓨터는이 동작을 보여주지 않았습니다. 그러나 내 생산 코드 (조금 더 복잡한)에서 내 가정용 컴퓨터도 문제를 보여주기 때문에 충분히 오래 실행 되었다면 그것을 보여 주었을 것입니다.
이것은 어떤 종류의 메모리 누출입니까? 내가 뭘 잘못 했어? 어쩌면 하나님의 낙관적 인 VBA 자체가 여기서 범인일까요?
해결책
정의 된 스타일을 사용하여 서식을 적용하십시오. 그것이 차이가 있는지 확인하십시오.
다른 팁
라인을 추가하면서 자동 페이지 매김을 끄고 도움이되는지 확인할 수 있습니다.
Application.Options.Pagination = False
제휴하지 않습니다 StackOverflow