Use VBA to Enter Break-Mode?

R

RayportingMonkey

I run a lot of code on a remote computer. The problem is that sometimes the
code hangs up, or the job runs longer than anticipated and I need to break
the code. unfortunately, sometimes I can't even remote into the machine or
Ctrl-Break isn't recognized.

I played with setting up a watch that breaks the script if a file named
pause.excel appears at a specific location - this did allow me to force the
code to enter break mode on a remote computer by creating the file
pause.excel from my laptop.

I haven't played with the watch feature until now so to test it I savd the
file, launched from another computer and looked at the watch, but it was
empty.

Is there VBA that I can put in the On-open statement that would Add my
critera for a Watch?

Or is there another way to force Excel into break-mode from a remote computer?
 
R

RayportingMonkey

I actually did check that out first. But considering that there are times I
can't get control of the machine that is running the code, depressing any
key(s) seems to be a moot point.

Again, with the Watch feature, I was at least able to place a file on a
shared drive which forced the code into break-mode, enabling me to get
control of the machine.

I apprecaite the response though...
 
D

Dick Kusleika

I played with setting up a watch that breaks the script if a file named
pause.excel appears at a specific location - this did allow me to force the
code to enter break mode on a remote computer by creating the file
pause.excel from my laptop.

That's pretty clever.

You might sprinkle some DoEvents lines in your code, particularly in loops.
This will allow commands in the Windows stack to execute and may be enough
to give you access and allow Control-Break to work.
 
R

RayportingMonkey

Thanks - and yes, using code like:

If Dir("\\NetworkShare\Pause.Excel") <> "" Then
MsgBox "You wanted to get my attention?"
Kill ("\\NetworkShare\Pause.Excel")
End If

would throw a message box, thus interrupting code execution. Now maybe this
is just me getting stuck on a particular train of thought, but I want the
"event", be it a watch or be it with code like the above to actually enter
break-mode.

Again, I can do it with a watch, but I can't figure out how to script an
on-open event that would Add my Watch criteria.

Further, I can use code like in my example, but couldn't figure out how to
throw the Ctrl-Break. I tried code like this, but it didn't do what I
expected (stop the code as if Ctrl-Break was pressed on the keyboard).

If Dir("\\NetworkShare\Pause.Excel") <> "" Then
SendKeys ("^{BREAK}")
Kill ("\\NetworkShare\Pause.Excel")
End If

I also tried removing the () like this: SendKeys "^{BREAK}" to no avail...

Again, I appreciate the assistance.
 
D

Dick Kusleika

Thanks - and yes, using code like:

If Dir("\\NetworkShare\Pause.Excel") <> "" Then
MsgBox "You wanted to get my attention?"
Kill ("\\NetworkShare\Pause.Excel")
End If

would throw a message box, thus interrupting code execution. Now maybe this
is just me getting stuck on a particular train of thought, but I want the
"event", be it a watch or be it with code like the above to actually enter
break-mode.

Again, I can do it with a watch, but I can't figure out how to script an
on-open event that would Add my Watch criteria.

Further, I can use code like in my example, but couldn't figure out how to
throw the Ctrl-Break. I tried code like this, but it didn't do what I
expected (stop the code as if Ctrl-Break was pressed on the keyboard).

If Dir("\\NetworkShare\Pause.Excel") <> "" Then
SendKeys ("^{BREAK}")
Kill ("\\NetworkShare\Pause.Excel")
End If

I also tried removing the () like this: SendKeys "^{BREAK}" to no avail...

I don't think you can program in a watch statement. I should have mentioned
that in my first reply, but I was busy getting ahead of myself.

To throw the equivalent of Ctl+Break, use Stop

If Condition Then
Stop
End if

But, of course, that's not like a watch because it only works when that If
block executes, whereas a watch would break at any time the condition is
met.
 
R

RayportingMonkey

Dick - I figured I was missing something simple like that!

Just for the sake of the thread, this is how I implimented the change:

If Dir("\\NetworkShare\Pause.Excel") <> "" Then
Kill ("\\NetworkShare\Pause.Excel")
Stop
End If

I had to put the Stop AFTER the Kill statement, so that the Pause.Excel file
gets removed, fostering a 1-Time Event.

Again, thanks!
Ray
 

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