Currently i have a macro that will run any number of other macros on all the
files in any number of folders.

Now, i have the user input how many macros to run, and how many folders.

For the amount of macros and folders, i have the user input the folder paths
and the macro names.

The paths and names are exported to a text file on a network drive that i
created for these types of output cases where i need to store and retrieve
information.

Well, the company that i work with wants to make my macros a company wide
deal. The problem i ran into is that if people run the same macro at the same
time, the log file person a is using, get's deleted when person b tries to
use it.

Following is a part of my code...

This part i use to create the files...

Set f = CreateObject("Scripting.FileSystemObject")
Set tLog = f.Createtextfile("Y:\ryan\vb\folderlist.txt", True)
Set mLog = f.Createtextfile("Y:\ryan\vb\macrolist.txt", True)

Here is part of my code that gets the inputs and writes it to the file

nfolders = InputBox(prompt:="How many folders do you want to run macro
on?")

If Len(nfolders) = 0 Then Exit Sub

Application.ScreenRefresh

For y = 1 To nfolders

If nfolders = 1 Then
path = InputBox(prompt:="Input the folder's path.")
ElseIf y = nfolders Then
path = InputBox(prompt:="Input the last folder's path.")
ElseIf y = 1 Then
path = InputBox(prompt:="Input the 1st folder's path.")
ElseIf y = 2 Then
path = InputBox(prompt:="Input the 2nd folder's path.")
ElseIf y = 3 Then
path = InputBox(prompt:="Input the 3rd folder's path.")
Else
path = InputBox(prompt:="Input the " & y & "th folder's path.")
End If

If Len(path) = 0 Then
MsgBox ("You hit cancel or didn't put anything in.")
Exit Sub
End If

tLog.writeline (path)

Application.ScreenRefresh

Next y

tLog.Close

after all this i do...

tLog = "Y:\ryan\vb\folderlist.txt"

Open tLog For Input As #1

Do While Not EOF(1)

Now, to solve this i'm going to change the program to create the txt file at
C:\ and then what i want it to do is erase it when the program is
finished.... how can i do this?

Re: Help with text file deletion by Jezebel

Jezebel
Wed Oct 19 18:31:52 CDT 2005

Make the file names variable and guaranteed unique. You can also store the
file in the each user's own APPDATA folder, which you can retrieve using:
environ$("APPDATA")

eg
Dim pFileName as string

pFileName = environ$("APPDATA") & "\folders" & format$(now, "yymmddhhnnss")
& ".txt"
Set tLog = f.Createtextfile(pFileName,True)

:

f.Deletefile pFileName


BTW, you don't need the FileSystemObject for any of this.
Open/Print/Input/Kill all work perfectly well.



"rhamre@citation.com" <rhamrecitationcom@discussions.microsoft.com> wrote in
message news:24E7858A-D3E3-4949-A04E-57BE4A39A30B@microsoft.com...
> Currently i have a macro that will run any number of other macros on all
> the
> files in any number of folders.
>
> Now, i have the user input how many macros to run, and how many folders.
>
> For the amount of macros and folders, i have the user input the folder
> paths
> and the macro names.
>
> The paths and names are exported to a text file on a network drive that i
> created for these types of output cases where i need to store and retrieve
> information.
>
> Well, the company that i work with wants to make my macros a company wide
> deal. The problem i ran into is that if people run the same macro at the
> same
> time, the log file person a is using, get's deleted when person b tries to
> use it.
>
> Following is a part of my code...
>
> This part i use to create the files...
>
> Set f = CreateObject("Scripting.FileSystemObject")
> Set tLog = f.Createtextfile("Y:\ryan\vb\folderlist.txt", True)
> Set mLog = f.Createtextfile("Y:\ryan\vb\macrolist.txt", True)
>
> Here is part of my code that gets the inputs and writes it to the file
>
> nfolders = InputBox(prompt:="How many folders do you want to run macro
> on?")
>
> If Len(nfolders) = 0 Then Exit Sub
>
> Application.ScreenRefresh
>
> For y = 1 To nfolders
>
> If nfolders = 1 Then
> path = InputBox(prompt:="Input the folder's path.")
> ElseIf y = nfolders Then
> path = InputBox(prompt:="Input the last folder's path.")
> ElseIf y = 1 Then
> path = InputBox(prompt:="Input the 1st folder's path.")
> ElseIf y = 2 Then
> path = InputBox(prompt:="Input the 2nd folder's path.")
> ElseIf y = 3 Then
> path = InputBox(prompt:="Input the 3rd folder's path.")
> Else
> path = InputBox(prompt:="Input the " & y & "th folder's path.")
> End If
>
> If Len(path) = 0 Then
> MsgBox ("You hit cancel or didn't put anything in.")
> Exit Sub
> End If
>
> tLog.writeline (path)
>
> Application.ScreenRefresh
>
> Next y
>
> tLog.Close
>
> after all this i do...
>
> tLog = "Y:\ryan\vb\folderlist.txt"
>
> Open tLog For Input As #1
>
> Do While Not EOF(1)
>
> Now, to solve this i'm going to change the program to create the txt file
> at
> C:\ and then what i want it to do is erase it when the program is
> finished.... how can i do this?



Re: Help with text file deletion by rhamrecitationcom

rhamrecitationcom
Wed Oct 19 20:16:04 CDT 2005

Thank you very much for this, this is the answer i needed.

BTW, i don't know VB, so that's most likely why the programming is so
shoddy. ;-)


"Jezebel" wrote:

> Make the file names variable and guaranteed unique. You can also store the
> file in the each user's own APPDATA folder, which you can retrieve using:
> environ$("APPDATA")
>
> eg
> Dim pFileName as string
>
> pFileName = environ$("APPDATA") & "\folders" & format$(now, "yymmddhhnnss")
> & ".txt"
> Set tLog = f.Createtextfile(pFileName,True)
>
> :
>
> f.Deletefile pFileName
>
>
> BTW, you don't need the FileSystemObject for any of this.
> Open/Print/Input/Kill all work perfectly well.
>
>
>
> "rhamre@citation.com" <rhamrecitationcom@discussions.microsoft.com> wrote in
> message news:24E7858A-D3E3-4949-A04E-57BE4A39A30B@microsoft.com...
> > Currently i have a macro that will run any number of other macros on all
> > the
> > files in any number of folders.
> >
> > Now, i have the user input how many macros to run, and how many folders.
> >
> > For the amount of macros and folders, i have the user input the folder
> > paths
> > and the macro names.
> >
> > The paths and names are exported to a text file on a network drive that i
> > created for these types of output cases where i need to store and retrieve
> > information.
> >
> > Well, the company that i work with wants to make my macros a company wide
> > deal. The problem i ran into is that if people run the same macro at the
> > same
> > time, the log file person a is using, get's deleted when person b tries to
> > use it.
> >
> > Following is a part of my code...
> >
> > This part i use to create the files...
> >
> > Set f = CreateObject("Scripting.FileSystemObject")
> > Set tLog = f.Createtextfile("Y:\ryan\vb\folderlist.txt", True)
> > Set mLog = f.Createtextfile("Y:\ryan\vb\macrolist.txt", True)
> >
> > Here is part of my code that gets the inputs and writes it to the file
> >
> > nfolders = InputBox(prompt:="How many folders do you want to run macro
> > on?")
> >
> > If Len(nfolders) = 0 Then Exit Sub
> >
> > Application.ScreenRefresh
> >
> > For y = 1 To nfolders
> >
> > If nfolders = 1 Then
> > path = InputBox(prompt:="Input the folder's path.")
> > ElseIf y = nfolders Then
> > path = InputBox(prompt:="Input the last folder's path.")
> > ElseIf y = 1 Then
> > path = InputBox(prompt:="Input the 1st folder's path.")
> > ElseIf y = 2 Then
> > path = InputBox(prompt:="Input the 2nd folder's path.")
> > ElseIf y = 3 Then
> > path = InputBox(prompt:="Input the 3rd folder's path.")
> > Else
> > path = InputBox(prompt:="Input the " & y & "th folder's path.")
> > End If
> >
> > If Len(path) = 0 Then
> > MsgBox ("You hit cancel or didn't put anything in.")
> > Exit Sub
> > End If
> >
> > tLog.writeline (path)
> >
> > Application.ScreenRefresh
> >
> > Next y
> >
> > tLog.Close
> >
> > after all this i do...
> >
> > tLog = "Y:\ryan\vb\folderlist.txt"
> >
> > Open tLog For Input As #1
> >
> > Do While Not EOF(1)
> >
> > Now, to solve this i'm going to change the program to create the txt file
> > at
> > C:\ and then what i want it to do is erase it when the program is
> > finished.... how can i do this?
>
>
>