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 개의 번호를 인쇄 다음 VBA 코드를 가지고있다.
- 글 머리 기호 목록
- 들여
- 및 tab stop로
alt text http://files.lans-msp.de/vbscript_tabstops.png
코드 라인의 임의의 수를 완벽하게 작동,하지만 어느 시점에서 말씀이 바로이 tab stop을 적용 중지 .
10 줄마다 형식을 재설정하지 않으면 코드가 영원히 작동한다는 것을 알고 있습니다 (실제로?!). 그러나 매 10 라인 브레이크는 필수품입니다.
모든 것이 다운되는 정확한 행 번호는 RAM의 양에 따라 다릅니다. 1GB의 제 작업 컴퓨터에서는 800 번 라인까지만 작동합니다 (보시다시피). 집에서 4GB를 사용하는 컴퓨터는이 동작을 나타내지 않았습니다. 그러나 내 생산 코드 (조금 더 복잡함)에서 내 가정용 컴퓨터가 문제를 잘 나타내주기 때문에 충분히 오래 실행하면 좋을 것이라고 확신 할 수 있습니다.
메모리 누출 같은 것이 있습니까? 나는 무엇을 잘못 했는가? 어쩌면, 신 - 금지, VBA 그 자체가 범인인가?
나는 지구상의 사람들이 형식이 전혀 다르지 않을 때 왜 모든 단일 라인을 직접 포맷할지 궁금해하고있다. – Tomalak
모든 줄이 아닙니다. 나는 단지 10 줄의 모든 블록을 다시 적용한다. 실제 스크립트에서는 블록 사이에서 더 많은 일이 진행됩니다. – eric
이 문제가 해결되었습니다. 나는 이것이 더 깨끗한 방법임을 알 수있다. 그러나 나는 아직도 Word가 어떤 종류의 메모리 누수가 있다고 생각한다. 어쩌면이 '수정'이 조금 더 경계를 밀어 냈을 것입니다 ... 어쨌든 고마워요, 제 문제는 없어졌고 가장 중요한 것이 있습니다! – eric