문제

다음 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

alt text
(원천: lans-msp.de)

이 코드는 임의의 라인 수에 완벽하게 작동하지만 어느 시점에서는 탭 스톱 적용을 중지합니다.

나는 10 줄마다 형식을 재설정하지 않으면 코드가 영원히 작동한다는 것을 알고 있습니다 (실제로?!?). 그러나 10 라인 브레이크마다 필수입니다.

모든 것이 분해되는 정확한 선 번호는 RAM의 양에 따라 다릅니다. 1GB가있는 내 작업 컴퓨터에서는 약 800 줄까지 작동합니다 (보시다시피). 4GB가있는 집에있는 내 컴퓨터는이 동작을 보여주지 않았습니다. 그러나 내 생산 코드 (조금 더 복잡한)에서 내 가정용 컴퓨터도 문제를 보여주기 때문에 충분히 오래 실행 되었다면 그것을 보여 주었을 것입니다.

이것은 어떤 종류의 메모리 누출입니까? 내가 뭘 잘못 했어? 어쩌면 하나님의 낙관적 인 VBA 자체가 여기서 범인일까요?

도움이 되었습니까?

해결책

정의 된 스타일을 사용하여 서식을 적용하십시오. 그것이 차이가 있는지 확인하십시오.

다른 팁

라인을 추가하면서 자동 페이지 매김을 끄고 도움이되는지 확인할 수 있습니다.

Application.Options.Pagination = False
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top