Application.FileSearch error

SFPCFS

New Member
Joined
Feb 7, 2014
Messages
40
Hi All

Another new issue - I have been presented with a old sheet that use the application.filesearch function.

However it is now saved as a 2010 excel sheet and this function is no longer valid.

Code:
Sub CheckWindowsSchedulerLogs()
Dim countF As Long
Dim fText As String
Dim fDate1 As Long, fDate2 As Long
Dim MALogDeficit As Long
Dim oFSO As New FileSystemObject
Dim oFS As Object
Dim a As Long, f As Long, rc As Long
Dim m As String
Dim NewSheet As Variant
Dim LastRow As Long
Dim mf As Boolean
Dim c
Dim LogLocation As String

MALogDeficit = Sheets(1).TBLogDeficit.Value
fDate1 = Now() - MALogDeficit / 24
LogLocation = Sheets("Main").Range("LogLocation").Value
        
With Application.FileSearch             'Search for the file begins.
    .NewSearch
    .LookIn = LogLocation
    .SearchSubFolders = True            'Including sub folder to ensure ALL files are scanned.
    .FileType = msoFileTypeAllFiles     'Get everything
    .FileName = "*"
    If .Execute() > 0 Then              'Execute is > 0 if something is found
    
    'If Excel errors here, it's probably because the sheet already exists.  Delete it if this is the case.
    'If that is not the case then something went horribly wrong.
    On Error GoTo rcHandler
    Set NewSheet = Sheets.Add(Type:=xlWorksheet, After:=Sheets("Job List"))
    NewSheet.Name = "WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)
    GoTo rcExit
rcHandler:
    Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Delete
    NewSheet.Name = "WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)
rcExit:
    On Error GoTo 0
    
    For countF = 1 To .FoundFiles.Count 'For each file from 1 to whatever...
        'This creates an instance of the MS Scripting Runtime FileSystemObject class
        Set oFS = CreateObject("Scripting.FileSystemObject")
        fDate2 = FileDateTime(.FoundFiles(countF))
        If fDate2 >= fDate1 Then
            f = f + 1 '
            
            Set oFS = oFSO.OpenTextFile(.FoundFiles(countF))
            Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("B1000").End(xlUp).Offset(2, -1).Value = .FoundFiles(countF)
            LastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
            a = 0
                Do Until oFS.AtEndOfStream 'Loop through the text file reading in every line.
                    fText = oFS.ReadLine
                    Select Case True
                        Case InStr(1, fText, "%put") 'No logging of %put "ERROR:".
                            rc = rc - 1 'where there is a false positive, minus 1 from the rc count.  It doesn't matter as long as rc is <=0
                        Case InStr(1, fText, "*LIBNAM*") 'No logging of LIBNAME ACL's".
                            rc = rc - 1
                        Case InStr(1, fText, "SASUSER registry") 'No logging of multi-session incompatibility".
                            rc = rc - 1
                        Case InStr(1, fText, "Compression was disabled") 'No logging of small, uncompressed datasets.
                            rc = rc - 1
                        Case InStr(1, fText, "confirming logoff") 'No logging of Mainframe logoff issue.
                            rc = rc - 1
                        Case InStr(1, fText, "printed on page") 'No logging of the fact an error was printed.
                            rc = rc - 1
                        Case InStr(1, fText, "HUGEWRK") 'No logging of Mainframe sign-in issue.
                            rc = rc - 1
                            mf = True
                        Case InStr(1, fText, "LIBNAME statement") And mf = True 'When we have the mainframe sign-on issue, also tells us the libname has an error.
                            rc = rc - 1
                            mf = False 'After the mainframe libname error we want to start capturing other libname errors as normal.
                        Case InStr(1, fText, "ERROR:")
                            Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("B" & LastRow + a).Value = fText
                            a = a + 1
                            rc = rc + 1000 'ensure rc is > 0 to capture the fact at least one error occurred.
                        Case InStr(1, fText, "WARNING:")
                            Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("B" & LastRow + a).Value = fText
                            a = a + 1
                            rc = rc + 1000
                    End Select
                Loop
            
            'For any job, search through the Job List for the Windows Scheduler job with the same name.
            'Assess whether the rc (return code) is GT or LE 0.  If there are no errors, rc will be <=0.
            'If rc is > 0 then using a column offset of "today", mark the job as an N due to the warning or error we have found.
            'Otherwise mark it as a "Y" because it's worked fine.
            For Each c In Range(Sheets("Log").Range("A1"), Sheets("Log").Range("A1000").End(xlUp))
                If c <> "" Then 'We can't use Len(c) on empty cells so skip any empties.
                    If InStr(1, .FoundFiles(countF), Left(c.Value, Len(c) - 3)) > 0 Then
                        If rc > 0 Then: c.Offset(0, Day(Date)) = "N"
                        If rc <= 0 Then: c.Offset(0, Day(Date)) = "Y"
                        Exit For
                            Else
                    End If
                        Else 'c is empty.
                End If
            Next c
            
                        
            Else    'fDate2 >= fDate1 not true, file is too old.
        End If
        Set oFS = Nothing
        a = 0
        mf = False
        rc = 0
    Next countF 'Go to the next file in the list.
        Else
            MsgBox "Something went wrong, I can't find any files."
    End If      '.Execute() > 0
End With        'Application.FileSearch
Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("A1").Value = "There were " & countF & " files found and " & f & " files read within the time constraint."
Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("A2").Value = "There are " & Application.WorksheetFunction.CountA(Range(Cells(3, "A"), Cells(1000, "A"))) & " reported error and/or warning messages."
Sheets("WSLC_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)).Range("A1:A2").Font.Bold = True
Columns(1).EntireColumn.AutoFit
Columns(2).EntireColumn.AutoFit
Columns(3).EntireColumn.AutoFit
End Sub

Above is the full code for this - its a function that is linked to a button

I've seena few differnt options on this, but is there any direct replacement as such for the old code?
 

Excel Facts

Add Bullets to Range
Select range. Press Ctrl+1. On Number tab, choose Custom. Type Alt+7 then space then @ sign (using 7 on numeric keypad)
Googled a few answers - some dir functions?

I'm not sure how I put these in on the current code I have though?
 
Upvote 0

Forum statistics

Threads
1,215,883
Messages
6,127,545
Members
449,385
Latest member
KMGLarson

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top