ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Flushing a File (https://www.excelbanter.com/excel-programming/286134-flushing-file.html)

Michael Bildner

Flushing a File
 
Hello,

I was wondering if there was a way to flush output to a
file. I currently have a macro that takes a few hours to
run (lots of data processing) and it prints status messages
to a log file. However, the messages never appear until
the file is closed.

I currently print to a log file as follows:

Dim LogFile as Integer
LogFile = FreeFile
Open "Filename" For Append As #LogFile
Print #LogFile, "Messages ..."
....
Close #LogFile

Is there a command (such as Flush #LogFile) that will flush
the stream? If not, is there another way to write messages
to a file that can be read real-time ?

Thanks for the help.

Michael Bildner

shockley

Flushing a File
 
Michael,

My experience is that the text file should update quickly after the command
executes. I ran this macro to test when there is computation going on:

Public Const FileDir As String = "C:\Documents and
Settings\shockley\Desktop\"
Sub Tester()
sFile = FileDir & "sTest.txt"
Open sFile For Append As #1
Print #1, "This is a test"
Close #1
Do
x = x + 1
Loop
End Sub
and it updates fine, so I don't know what your problem might be.

Another way to write to files is using the Scripting.FileSystemObject which,
I believe, acts synchronously rather than asynchronously like the Print
command--it's worth a try. Here's a link to the MSDN webpage where you can
learn about the fso objects:

http://msdn.microsoft.com/library/de...us/script56/ht
ml/jsorifilesystemobjectmethods.asp

See "OpenTextFile Method"

HTH,
Shockley



"Michael Bildner" wrote in message
...
Hello,

I was wondering if there was a way to flush output to a
file. I currently have a macro that takes a few hours to
run (lots of data processing) and it prints status messages
to a log file. However, the messages never appear until
the file is closed.

I currently print to a log file as follows:

Dim LogFile as Integer
LogFile = FreeFile
Open "Filename" For Append As #LogFile
Print #LogFile, "Messages ..."
...
Close #LogFile

Is there a command (such as Flush #LogFile) that will flush
the stream? If not, is there another way to write messages
to a file that can be read real-time ?

Thanks for the help.

Michael Bildner




Jim Rech

Flushing a File
 
Looks like you may have to open, write and close with each write. You might
use Application.Statusbar = "Message.." as an alternative.

--
Jim Rech
Excel MVP




All times are GMT +1. The time now is 08:31 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com