![]() |
|
|||||||
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
Hi Guys
Season Greetings and Happy New Year I've adapated the following below code from this forum https://www.msofficeforums.com/word-...different.html Code:
Option Explicit
Public FSO As Object 'a FileSystemObject
Public oFolder As Object 'the folder object
Public oSubFolder As Object 'the subfolders collection
Public oFiles As Object 'the files object
Dim i As Long, strNm As String, strFnd As String, strFile As String, strList As String
Sub FindTextInDocs()
' Minimise screen flickering
Application.ScreenUpdating = False
Dim StrFolder As String
' Browse for the starting folder
StrFolder = GetTopFolder
If StrFolder = "" Then Exit Sub
strFnd = InputBox("What is the string to find?", "File Finder")
If Trim(strFnd) = "" Then Exit Sub
strNm = ActiveDocument.FullName
' Search the top-level folder
Call GetFolder(StrFolder & "\")
' Search the subfolders for more files
Call SearchSubFolders(StrFolder)
' Return control of status bar to Word
Application.StatusBar = ""
' Restore screen updating
Application.ScreenUpdating = True
MsgBox i & " files processed." & vbCr & "Matches with " & strFnd & " found in:" & strList, vbOKOnly
End Sub
Function GetTopFolder() As String
GetTopFolder = ""
Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0)
If (Not oFolder Is Nothing) Then GetTopFolder = oFolder.Items.Item.Path
Set oFolder = Nothing
End Function
Sub SearchSubFolders(strStartPath As String)
If FSO Is Nothing Then Set FSO = CreateObject("scripting.filesystemobject")
Set oFolder = FSO.GetFolder(strStartPath)
Set oSubFolder = oFolder.subfolders
For Each oFolder In oSubFolder
Set oFiles = oFolder.Files
' Search the current folder
Call GetFolder(oFolder.Path & "\")
' Call ourself to see if there are subfolders below
SearchSubFolders oFolder.Path
Next
End Sub
Sub GetFolder(StrFolder As String)
strFile = Dir(StrFolder & "*.doc", vbNormal)
' Process the files in the folder
While strFile <> ""
' Update the status bar is just to let us know where we are
Application.StatusBar = StrFolder & strFile
i = i + 1
Call DocTest(StrFolder & strFile)
strFile = Dir()
Wend
End Sub
Sub DocTest(strDoc As String)
Dim Doc As Document
' Open the document
If strDoc <> strNm Then
Set Doc = Documents.Open(strDoc, AddToRecentFiles:=False, ReadOnly:=True, Format:=wdOpenFormatAuto, Visible:=False)
With Doc
With .Range
With .Find
.Text = strFnd
.MatchCase = False
.MatchAllWordForms = False
.MatchWholeWord = False
.Execute
If .Found Then strList = strList & vbCr & strFile
End With
End With
.Close SaveChanges:=False
End With
End If
' Let Word do its housekeeping
DoEvents
Set Doc = Nothing
End Sub
folder or a directory "C:\Sam-Documents\VBA-Word" Basically to search *.docx files in the mentioned directory folder. as i don't want to have option to choose a folder and its sub folder Will be really grateful to you SamD |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Searching WORD files for specific link ???
|
ksor | Word VBA | 1 | 10-12-2019 08:33 PM |
| Formula for searching names in one go | SilverChat | Excel | 2 | 05-07-2018 06:11 PM |
Using Word VBA to change file names in a directory
|
sg11 | Word VBA | 4 | 03-22-2018 04:25 AM |
Macro to check the existence of a word docx file and create a new word file with specific content.
|
staicumihai | Word VBA | 14 | 11-15-2016 01:42 AM |
How To Apply A VBA Macro to All Subfolders in a Directory of a docx. Extension
|
jc491 | Word VBA | 8 | 09-11-2015 08:31 AM |