2017-01-18 1 views
-1

나는 단어 문서에서 단락을 읽으려면 Excel에서 vba를 실행 중입니다. 코드는 잘 작동하지만, 나는 10000 개의 단락을 읽었으며, 결국 루프가 크롤링하고 있습니다. 나는 의사라는 단어를 메모리에 읽어 들이고 루프를 시도하여 속도가 향상되는지 확인하려고했습니다. 문제는 어떻게해야할지 모르겠다는 것입니다. 어떤 제안? 여기 VBA는 시간이 지남에 따라 속도가 느려집니다. 속도를 높이기 위해 개체를 메모리에로드 할 수 있습니까?

내가 현재 각 단락의 위치를 ​​모르는

Set wdDoc = GetObject(wdFileName) 
Set myParas = wdDoc.Paragraphs 
ParCount = myParas.Count 

For X = 0 To ParCount ' ParCount is 10,000 
    With myParas(X) 
     pLevel = .OutlineLevel 
    End With 
Next X 
+2

? 모든 문서 텍스트를'String'으로 얻는 것은 꽤 쉽지만, 유용할지의 여부는 여러분이 의도 한 것에 달려 있습니다. – Comintern

+0

For 루프 대신 For Each 루프 사용 – Slai

+0

왜 모든 단락을 한 번에 메모리에로드해야합니까? 당신은 그것들을 모두 동시에 사용할 수 있어야합니까? 정말로해야한다면 데이터베이스에 저장하는 것이 좋습니다. –

답변

3

말씀을 가지고있는, 그래서 document.Paragraphs(1234)를 사용하는 경우는 첫 번째 단락에서 검색을 시작합니다. For EachFor보다 훨씬 빠른 것이다 이유는 다음과 같습니다

"물건을 할"무엇
Dim p As Word.Paragraph 

For Each p in document.Paragraphs 
    ' do stuff 
Next 
+0

감사. 나는 그것을 줄 것이다. 아마도 나는 나의 요청으로 충분히 명확하지 않았을 것입니다 - 여기에 첫 번째로 게시하고 의사 코드의 절반을 잃어 버렸습니다. 어쨌든, 이것은 내가 찾고 있었던 것과 같아서 제안에 감사드립니다. – SDeGonge

+0

뛰어난! 내 문제를 해결했다. 컬렉션의 루핑은 For/Next 옵션과 비교하여 번개가 빠릅니다. 감사. – SDeGonge