View Single Post
 
Old 12-16-2020, 03:36 PM
gmaxey gmaxey is offline Windows 10 Office 2016
Expert
 
Join Date: May 2010
Location: Brasstown, NC
Posts: 1,617
gmaxey is just really nicegmaxey is just really nicegmaxey is just really nicegmaxey is just really nicegmaxey is just really nice
Default

John,


Personally, I think the sooner you learn to use ranges vice selection, the better off you will be. Whichever you use, in my experience, just "If Selection.Find.Execute ..." works just as well as "Selection.Find.Execute followed by If Selection.Find.Found ..."


The latter for some reason is a practice of Paul's which I don't understand but also feel he will never change. To each his own. You don't need the public variable "x" at all or the two functions. Just use the form tag property:

Code:
Sub AllFolderDocs_Search()
Dim strFolder As String, strFile As String, strDocNm As String, wdDoc As Document
Dim oFrm As Uform_PauseCode
  Application.ScreenUpdating = False
  strDocNm = ActiveDocument.FullName
  strFolder = GetFolder
  If strFolder = "" Then Exit Sub
  strFile = Dir(strFolder & "\*.doc*", vbNormal)
  While strFile <> ""
    'Change the following <> to >= to pick up from where the previous search left off:
    If strFolder & "\" & strFile <> strDocNm Then
      Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False)
      With Selection.Find
        .Text = "Dogs"
        If .Execute Then
          Application.ScreenUpdating = True
          Set oFrm = New Uform_PauseCode
          With oFrm
            .Show vbModeless
            Do
              DoEvents
              Select Case .Tag
                Case Is = "Continue"
                  Unload oFrm
                  Exit Do
                Case Is = "Exit"
                  Unload oFrm
                  GoTo lbl_Exit
              End Select
            Loop
          End With
          Application.ScreenUpdating = False
        End If
      End With
      DoEvents
      wdDoc.Close SaveChanges:=True
    End If
    strFile = Dir()
  Wend

 lbl_Exit:
  Set oFrm = Nothing: Set wdDoc = Nothing
  Application.ScreenUpdating = True
   Exit Sub
End Sub

Function GetFolder() As String
Dim oFolder As Object
  GetFolder = ""
  Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0)
  If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path
  Set oFolder = Nothing
lbl_Exit:
  Exit Function
End Function
and:


Code:
Option Explicit
Private Sub Button1_Continue_Click()
  Tag = "Continue"
lbl_Exit:
  Exit Sub
End Sub

Private Sub Button2_Exit_Click()
  Tag = "Exit"
lbl_Exit:
  Exit Sub
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  If CloseMode = 0 Then
    Cancel = True
    Button2_Exit_Click
  End If
lbl_Exit:
  Exit Sub
End Sub
__________________
Greg Maxey
Please visit my web site at http://www.gregmaxey.com/
Reply With Quote