Hal, here is a routine that while not exactly what
you want (it finds text files and changes them
then saves it as an xls file) you can get what
you need out of it......if you want further info
then email me........
Dim x As Integer
Dim temp
Dim i As Integer
Dim Drive As String
Dim Filename 'Must be a variant !!
Dim Filetype As String 'eg. *.txt , *.xls etc
Dim ChFiles() As String 'Array that contains FileName to change
Dim DirSave As String 'Dir where you want to save in
Dim FFiles As Integer
Dim WB As Integer
Sub Version1()
'-------------------------------------------------
Drive = "A:\" 'Change this for another drive
Filetype = "*.txt" 'Change this to suit
DirSave = "C:\" 'Dir where you want to save in
'-------------------------------------------------
With Application.FileSearch
.NewSearch
.LookIn = Drive
.SearchSubFolders = False
.Filename = Filetype
.MatchTextExactly = True
.MatchAllWordForms = True
.Filetype = msoFileTypeAllFiles
If .Execute() > 0 Then
ReDim ChFiles(.FoundFiles.Count)
For i = 1 To .FoundFiles.Count
'Get Filename only
x = 1
While InStr(x, .FoundFiles(i), "\") <> 0
temp = InStr(x, .FoundFiles(i), "\")
x = x + 1
Wend
'Store filename in array
ChFiles(i) = Right(.FoundFiles(i), Len(.FoundFiles(i)) - x + 1)
Next
End If
If .FoundFiles.Count = 0 Then MsgBox "No Text files in " & Drive: End
End With
'---------------------------------------------------------------------
On Error GoTo ErrH
Application.ScreenUpdating = False
'Now open all files in array
For WB = 1 To UBound(ChFiles())
Workbooks.OpenText Drive & ChFiles(WB), Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 2), _
Array(2, 2), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1))
ActiveWorkbook.SaveAs Filename:=DirSave & Left(ChFiles(WB), Len(ChFiles(WB)) - 3) & "xls"
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
MsgBox "Completed!"
Exit Sub
ErrH:
If Err.Number <> 1004 Then
MsgBox Err.Number & " :=" & Err.Description
Else
Resume Next
End If
End Sub
Ivan