Faster opening of Word files

R

RosH

Hello everyone,
I recently made a macro which would search for specific keywords in a
list of Microsoft word files and find the number of occurance of the
particular keyword. The problem is that everytime this macro opens a
new word file, it takes a lot of time. I am new to object oriented
programming. If anybody has any ideas of making this macro faster,
please suggest. Thank you.

A core part of the macro is as given below.

-----------------------------------------------------

For Each nDocFile In Range("B4:B" & FindLastRow("B4")).Cells
sDoc = Range("B1").Value & "\" & nDocFile.Value
Set wordApp = CreateObject("Word.Application")
nDocFile.Select
wordApp.Documents.Open (sDoc)
wordApp.Visible = False

For Each nWord In Range(Cells(3, 4), Cells(3, UBound(aKeywords) +
3)).Cells
sText = nWord

With wordApp.Selection.Find
.MatchWholeWord = True
Counter = 0
Do While .Execute(FindText:=sText, Forward:=True) =
True
Counter = Counter + 1
Loop
End With

nDocFile.Offset(0, nWord.Column - 2).Value = Counter

Next

wordApp.Quit
Set wordApp = Nothing

Next
 
G

Guest

One quick thought - try using early binding instead of late binding for your
Word object and set your WordApp variable before your for loop. Each time
your loop executes you are re-recreating your WordApp variable. Instead of
quitting word inside your loop, just close the document. To use early
binding, set up a reference to the word object library (Tools/References -
Check the Microsoft Word Object Library). Also, with a reference to Word set
up, VBA's intellisense will work for your Word object.


Sub Test()

Dim WordApp As Word.Application
Set WordApp = New Word.Application

For Loop
.......
......
For Loop
.....
....
Next
WordApp.Documents.Close savechanges:=False
Next
WordApp.Quit
Set WordApp = Nothing
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top