View Single Post
  #15   Report Post  
Posted to microsoft.public.excel.programming
Steve Yandl Steve Yandl is offline
external usenet poster
 
Posts: 284
Default Changing a file extension

Kevin,

Here is an example using the Scripting file system object rather than the
OpenText method.

It looks at the folder named "C:\Test". Inside that folder, it locates
every file that has the extension "log". It opens the text files with log
extension and reads them line by line. For lines before line 21, it creates
an array of strings considering the tab character as separator. It
retrieves the fourth and fifth values from those lines that have sufficient
data and uses those values to append columns A and B on Sheet 1 of the
active workbook.

_____________________________________

Sub DataFromLogFiles()
Const ForReading = 1

Dim strPath As String
Dim strLine As String
Dim R As Integer
Dim L As Integer

strPath = "C:\Test"

R = Sheets(1).UsedRange.Rows.Count + 1

Set FSO = CreateObject("Scripting.FileSystemObject")
Set fldr = FSO.GetFolder(strPath)

For Each myFile In fldr.Files
If FSO.GetExtensionName(myFile) = "log" Then
Set objFile = FSO.OpenTextFile(myFile, ForReading)
L = 0
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
L = L + 1
If L < 21 Then
arrFields = Split(strLine, vbTab)
If UBound(arrFields) = 5 Then
Sheets(1).Cells(R, 1).Value = arrFields(3)
Sheets(1).Cells(R, 2).Value = arrFields(4)
R = R + 1
End If
End If
Loop
objFile.Close
End If
Next myFile

Set fldr = Nothing
Set FSO = Nothing
End Sub


_____________________________________

Steve Yandl



wrote in message
...
Steve,

The format of the log files doesnt vary. The values are tab
separated.

Please let me know the way to retrieve the values. If I change the
extension to *.xls I can accomplish way I am trying to do.

Kevin

On Apr 14, 5:39 pm, "Steve Yandl" wrote:
Kevin,

Do you know the format of the log files or does it vary? Specifically,
are
the values comma separated, tab separated, space separated or something
else? If you want the 4th and 5th values (columns D and E) from the
first
20 lines of some text files, there are ways to retrieve them, especially
if
you know how the values are separated.

Steve

wrote in message

...

Steve,


Given below is the macro I have. It looks for *.xls files in a folder
(Path) and then retrieves D1 to D20 values, places them in column A.
Likewise, E1 to E20 values are placed in column B.


I need to fetch those values from *.log files. I am not sure if the
macro would work, unless and until I change the *.log to *.xls


Kevin


Path = Dir(MyPath & "*.xls")
Set sh = Sheets("Sheet1")


Fnum = 0
Do While Path < ""
Fnum = Fnum + 1
ReDim Preserve MyFiles(1 To Fnum)
MyFiles(Fnum) = Path
Path = Dir()
Loop


If Fnum 0 Then
For Fnum = LBound(MyFiles) To UBound(MyFiles)


rnum = LastRow(sh)


Set destrange = sh.Cells(rnum + 1, "A")


GetData MyPath & MyFiles(Fnum), "Sheet1", "D1:D20",
destrange, False, False


Set destrange = sh.Cells(rnum + 1, "B")
GetData MyPath & MyFiles(Fnum), "Sheet1", "E1:E20",
destrange, False, False
Next
End If


On Apr 14, 4:51 pm, "Steve Yandl" wrote:
Kevin,


You should probably share your macro as it is now and explain what you
want
to accomplish. If you have file names listed in a workbook or a text
file
and they include the full path, it is certainly possible to alter the
extensions of the referenced files but it is also possible to get
Excel
to
regard them as the text files they are and act accordingly. Depending
on
your goal and the scenario, the second option is probably far safer.


Steve Yandl


wrote in message


...


Macropod,


My macro uses


Set sh = Sheets("Sheet1")


So, its not working with *.log file. Now, I have to change the *.log
file to *.xls file.. I have no other option, I guess!


Kevin


On Apr 14, 4:38 pm, wrote:
Hi Macropod,


When I manually rename that *.log file to *.xls and open that excel
file, I find the excel file in good shape. I understand that this
is
not possible in all cases but in this particular case, it works.


The *.log file has data in 4 column, which when opened in a excel
file, is arranged in A, B, C and D columns respectively. The macro
I
have references the column A and B of the excel file. Since, I have
a
*.log file, I am not sure how my macro would associate the columns
in
the *.log file as A and B. I guess this is possible only if the log
file is changed into an excel file.


This being the case, per your reply, my macro should be able to
read
the values from *.log file? I am going to give this a shot.


Cheers
Kevin


On Apr 14, 4:26 pm, "macropod" wrote:


Hi Kevin,


The file extension needn't affect your macro's ability to read
the
*.txt and *.log files' contents. In any event, changing the
extension doesn't turn the files into Excel files and could cause
other
problems. Plus, you'll still need to understand those files'
structure and code accordingly.


Cheers
--
macropod
[MVP - Microsoft Word]
-------------------------


wrote in
...
Hello group,


I have a macro to pull the values in row A and B of a workbook,
to
another workbook. I have some values in the files that have
*.txt
and
*.log extension.


Is there any macro to change the extension of the file (*.txt
and
*.log) to *.xls? Please let know.


Thanks,
Kevin