View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
K Dales[_2_] K Dales[_2_] is offline
external usenet poster
 
Posts: 1,163
Default Customising Application.Filesearch to process textpad kind of file

For the first part, forget the FileType property of the FileSearch and use
FileName := "*.LST" instead.

For the second part, add the parameter the the line declaring the procedure,
i.e:
Sub RenamingLSTasXLS(LSTFilePath as String)

Within the sub, remove the "hard coded" file path and use LSTFilePath
instead, i.e:
Workbooks.OpenText Filename:= LSTFilePath Origin:=437, StartRow ...
' rest of code here
ActiveWorkbook.SaveAs Filename:= Replace(LSTFilePath,".lst",".xls"),
FileFormat:=xlNormal, ...

That takes care of the Sub modifications, so now from your Sub
OpenLSTfilesInLocation() call it as:
For i = 1 To .FoundFiles.Count
Call RenamingLSTasXLS(FoundFiles(i))
Next i


"Hari" wrote:

Hi,

I have a folder named "C:\Documents and
Settings\abc\Desktop\Automate\Dev\From Client\Raw Data"

Within the Raw Data folder I have subfolders named "Week 1", "Week 2", "Week
3" etc.

Within a particular week's folder (let's say "Week 1"), I have some LST
files (a notepad or textpad kind of file). I want to programmatically open
these text kind of files and save them as XLS files in a different folder .

To convert a single file I have the following macro.

Sub RenamingLSTasXLS()

Workbooks.OpenText Filename:= _
"C:\Documents and Settings\abc\Desktop\Automate\Dev\From Client\Raw
Data\week 1\dev11112.lst", Origin:=437, StartRow _
:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False,
Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\abc\Desktop\Automate\Dev\Working
Files\Renaming\dev11112.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

Now, since I automatically want to do the above for all the LST files within
the Raw Data folder I used the following "Application.filesearch" method
(somebody in the NG helped me with this feature when I wanted to open XLS
files programmatically.)

Sub OpenLSTfilesInLocation()

Application.ScreenUpdating = False
Dim i As Integer
With Application.FileSearch
.NewSearch
.LookIn = "C:\Documents and Settings\abc\Desktop\Automate\Dev\From
Client\Raw Data"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
.Execute
For i = 1 To .FoundFiles.Count
Call RenamingLSTasXLS
Next i
End With
Application.ScreenUpdating = True

End Sub

The problem with the Sub OpenLSTfilesInLocation() is ..

a) I want to open LST files only and not Excel files, so in the above code
what should I substitute .FileType = msoFileTypeExcelWorkbooks with so that
I get the count of LST files. I searched help for filetypes but couldnt get
any help..

b) How may I pass the name of the LST files as an argument to the Sub
RenamingLSTasXLS().

--
Thanks a lot,
Hari
India