Positioning a DOS Window

R

Robin Clay

Greetings !

I currently have this-
--------------------------------------------
Open "C:\Runner.bat" For Output As #1
Print #1, "@ECHO off"
Print #1, "Echo Please wait -"
Print #1, "Echo This may take some time ...."
Print #1, " [ other DOS commands ] ."
Close

Shell "C:\Runner.bat", vbNormalFocus

MsgBox "Please wait " & vbCrLf & _
"until the DOS window closes."

Kill "C:\Runner.bat"
----------------------------------------------

The reason for the MsgBox
is to prevent VBA from KILLing the batch file
until it has completed running.

I would like the DOS window to cover the MsgBox.

How can I specify whereabouts on the screen
the DOS window will appear?


RClay AT haswell DOT com
 
D

Dave Peterson

I don't know a way of positioning the DOS window, but you could stop it from
closing:

Shell Environ("comspec") & " /k c:\runner.bat", vbNormalFocus

/c (instead of /k) will close the window

Robin said:
Greetings !

I currently have this-
--------------------------------------------
Open "C:\Runner.bat" For Output As #1
Print #1, "@ECHO off"
Print #1, "Echo Please wait -"
Print #1, "Echo This may take some time ...."
Print #1, " [ other DOS commands ] ."
Close

Shell "C:\Runner.bat", vbNormalFocus

MsgBox "Please wait " & vbCrLf & _
"until the DOS window closes."

Kill "C:\Runner.bat"
----------------------------------------------

The reason for the MsgBox
is to prevent VBA from KILLing the batch file
until it has completed running.

I would like the DOS window to cover the MsgBox.

How can I specify whereabouts on the screen
the DOS window will appear?

RClay AT haswell DOT com
 
R

Robin Clay

Thank you for the suggestion - but acksherley....
VBA shells out to run a batch file
that takes several minutes to run.

Meanwhile, VBA continues,
and the next thing it does
is to kill the batch file -
but that is still running !


So I have inserted a MsgBox -
but if the user sees this,
she may be temopted to click OK...

So I wanted the DOS window to hide
the MsgBox until the batch file
has finished running.

Then the DOS window closes,
and the user may then click OK
to let VBA continue.

So I actually want the DOS window
to close on completion.


But what I was seeking
was a way to ensure
that the DOS window
covered the MsgBox.


Thanks again.

-----Original Message-----
I don't know a way of positioning the DOS window,
but you could stop it from closing:

Shell Environ("comspec") & _
" /k c:\runner.bat", vbNormalFocus

/c (instead of /k) will close the window

Robin said:
Greetings !

I currently have this-
--------------------------------------------
Open "C:\Runner.bat" For Output As #1
Print #1, "@ECHO off"
Print #1, "Echo Please wait -"
Print #1, "Echo This may take some time ...."
Print #1, " [ other DOS commands ] ."
Close

Shell "C:\Runner.bat", vbNormalFocus

MsgBox "Please wait " & vbCrLf & _
"until the DOS window closes."

Kill "C:\Runner.bat"
----------------------------------------------

The reason for the MsgBox
is to prevent VBA from KILLing the batch file
until it has completed running.

I would like the DOS window to cover the MsgBox.

How can I specify whereabouts on the screen
the DOS window will appear?

RClay AT haswell DOT com

--

Dave Peterson
(e-mail address removed)
.
 
D

DNF Karran

Thought i had it but no coffee in the system yet.....

Hmm... although this might work...

What if you made a user form that uses the onload event to run the do
window? that way you can bring up the form and then show the dos windo
in front just by using vbnormalfocus...

Off to put the kettle on now...
 
D

Dave Peterson

Do you want to have your code wait for the .bat file to finish?

If yes, a couple of links:

http://support.microsoft.com/?kbid=214248
XL2000: How to Force Macro Code to Wait for Outside Procedure

Here's a link to a nice ShellAndWait function that does that.
http://groups.google.com/groups?threadm=ump2dlfcBHA.1656@tkmsftngp03

(I like to use the second one.)

====

I'm not sure why it kills the .bat file, though.

Robin said:
Thank you for the suggestion - but acksherley....
VBA shells out to run a batch file
that takes several minutes to run.

Meanwhile, VBA continues,
and the next thing it does
is to kill the batch file -
but that is still running !

So I have inserted a MsgBox -
but if the user sees this,
she may be temopted to click OK...

So I wanted the DOS window to hide
the MsgBox until the batch file
has finished running.

Then the DOS window closes,
and the user may then click OK
to let VBA continue.

So I actually want the DOS window
to close on completion.

But what I was seeking
was a way to ensure
that the DOS window
covered the MsgBox.

Thanks again.
-----Original Message-----
I don't know a way of positioning the DOS window,
but you could stop it from closing:

Shell Environ("comspec") & _
" /k c:\runner.bat", vbNormalFocus

/c (instead of /k) will close the window

Robin said:
Greetings !

I currently have this-
--------------------------------------------
Open "C:\Runner.bat" For Output As #1
Print #1, "@ECHO off"
Print #1, "Echo Please wait -"
Print #1, "Echo This may take some time ...."
Print #1, " [ other DOS commands ] ."
Close

Shell "C:\Runner.bat", vbNormalFocus

MsgBox "Please wait " & vbCrLf & _
"until the DOS window closes."

Kill "C:\Runner.bat"
----------------------------------------------

The reason for the MsgBox
is to prevent VBA from KILLing the batch file
until it has completed running.

I would like the DOS window to cover the MsgBox.

How can I specify whereabouts on the screen
the DOS window will appear?

RClay AT haswell DOT com

--

Dave Peterson
(e-mail address removed)
.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top