Hi All,
My current code will open and compile all my required cells to a Master document and all works fine until I come across another file type, my problem is I need to only open files of a xlsx type, my current code will try to open any file beginning with PJ, even a doc file, how can I alter to code to only open xlsx files?
Option Explicit
Sub DoStuff()
Application.ScreenUpdating = True
' ****************************************************
' Set this line to the path and Parent Folder ...don't forget True at the end of the line
OpenFilesInAllFolders "F:\Excel Test Files\Excel Compile", True
' ****************************************************
Sheets("Sheet1").Activate
Application.ScreenUpdating = True
End Sub
'Summary: Open all files in a single folder or all files in the subfolders of the parent
' folder, Only look at files that begin with PJ.
Sub OpenFilesInAllFolders(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)
Dim FSO As Object
Dim SourceFolder As Object
Dim subfolder As Object
Dim FileItem As Object
Dim LR As Long
Dim ws As Worksheet
Set ws = Sheets("Sheet1") 'Target Sheet Name
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(SourceFolderName)
For Each FileItem In SourceFolder.Files
If Not InStr(FileItem.Name, "Master") = 1 _
And Not InStr(FileItem.Name, "~$Master") = 1 _
And InStr(FileItem.Name, "PJ") Then
Workbooks.Open SourceFolder & "\" & FileItem.Name
' ActiveSheet.Range("A98").Value = "Compiled" This allows the Script
' To know that the file has been read already, stops any duplications
If Not ActiveSheet.Range("A98").Value = "Compiled" Then
With ws
LR = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Cells(LR, "A") = ActiveSheet.Range("E12") 'Customer
.Cells(LR, "B") = ActiveSheet.Range("E13") 'Location
.Cells(LR, "C") = ActiveSheet.Range("E14") 'Contact
.Cells(LR, "D") = ActiveSheet.Range("U12") 'Technician
.Cells(LR, "E") = ActiveSheet.Range("U13") 'Chargable
.Cells(LR, "F") = ActiveSheet.Range("G15") 'Machine Type 1
.Cells(LR, "G") = ActiveSheet.Range("G16") 'Serial Number 1
.Cells(LR, "H") = ActiveSheet.Range("G17") 'Hours Run 1
.Cells(LR, "I") = ActiveSheet.Range("I20") 'Reason For Visit
.Cells(LR, "J") = ActiveSheet.Range("Y10") 'PJ**-0000-0000-00
.Cells(LR, "K") = ActiveSheet.Range("AB10") 'PJ00-****-0000-00
.Cells(LR, "L") = ActiveSheet.Range("AG10") 'PJ00-0000-****-00
.Cells(LR, "M") = ActiveSheet.Range("AL10") 'PJ00-0000-0000-**
.Cells(LR, "N") = ActiveSheet.Range("A23") 'Line 1 of
.Cells(LR, "O") = ActiveSheet.Range("A24") 'Line 2
.Cells(LR, "P") = ActiveSheet.Range("A25") 'Line 3
.Cells(LR, "Q") = ActiveSheet.Range("A26") 'Line 4
.Cells(LR, "R") = ActiveSheet.Range("A27") 'Line 5
.Cells(LR, "S") = ActiveSheet.Range("A28") 'Line 6
.Cells(LR, "T") = ActiveSheet.Range("A29") 'Line 7
.Cells(LR, "U") = ActiveSheet.Range("A30") 'Line 8
.Cells(LR, "V") = ActiveSheet.Range("A31") 'Line 9
.Cells(LR, "W") = ActiveSheet.Range("A32") 'Line 10
.Cells(LR, "X") = ActiveSheet.Range("A33") 'Line 11
.Cells(LR, "Y") = ActiveSheet.Range("A34") 'Line 12
.Cells(LR, "Z") = ActiveSheet.Range("A35") 'Line 13
.Cells(LR, "AA") = ActiveSheet.Range("A36") 'Line 14
.Cells(LR, "AB") = ActiveSheet.Range("A37") 'Line 15
.Cells(LR, "AC") = ActiveSheet.Range("A67") 'Line 16
.Cells(LR, "AD") = ActiveSheet.Range("A68") 'Line 17
.Cells(LR, "AE") = ActiveSheet.Range("Y50") 'Total Hours Worked
ActiveSheet.Range("A98").Value = "Compiled"
End With
End If
ActiveWorkbook.Close True
End If
Next FileItem
If IncludeSubfolders Then
For Each subfolder In SourceFolder.SubFolders
OpenFilesInAllFolders subfolder.Path, True
Next subfolder
End If
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
End Sub
Bookmarks