Launch VBS from VBA

C

Cajeto 63

Hello,

I'm trying to launch a VBS from excel using the code below:

Dim Retval
RetVal = Shell("cmd / u:\windows>u:\Formation\DataSet
Vision\VBscriptXL_Vision\ImportDonnéesTest.vbs")

but it does not work although the vbs works perfectly when launched "by hand"

Instead of running the script it opens a cmd windows giving the following
message:
" CMD.EXE was started with the path "\\myserver\myname\my documents" as the
current directory. UNC paths are not supported. Defaulting to windows
directory."

Any help to solve this issue would be very highly appreciated.

Thank you.
 
N

NickHK

Dim Retval
Retval = Shell("WScript.exe C:\Test.vbs")
or
Retval = Shell("CScript.exe C:\Test.vbs")

There is difference between the W and C script engines, but forget the
nuances now
I can't test if they work with UNC paths

NickHK
 
D

Dave Patrick

You need to instantiate a shell object. Try something like;

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & Dir"
Set oShell = Nothing

--

Regards,

Dave Patrick ....Please no email replies - reply in newsgroup.
Microsoft Certified Professional
Microsoft MVP [Windows]
http://www.microsoft.com/protect

:
| Hello,
|
| I'm trying to launch a VBS from excel using the code below:
|
| Dim Retval
| RetVal = Shell("cmd / u:\windows>u:\Formation\DataSet
| Vision\VBscriptXL_Vision\ImportDonnéesTest.vbs")
|
| but it does not work although the vbs works perfectly when launched "by
hand"
|
| Instead of running the script it opens a cmd windows giving the following
| message:
| " CMD.EXE was started with the path "\\myserver\myname\my documents" as
the
| current directory. UNC paths are not supported. Defaulting to windows
| directory."
|
| Any help to solve this issue would be very highly appreciated.
|
| Thank you.
| --
|
|
| Regards, Cajeto 63.
|
|
|
 
D

Dave Patrick

Oops, should have been;

Dim oShell
Set oShell = CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & Dir"
Set oShell = Nothing

--

Regards,

Dave Patrick ....Please no email replies - reply in newsgroup.
Microsoft Certified Professional
Microsoft MVP [Windows]
http://www.microsoft.com/protect
 
C

Chip Pearson

NickHK said:
I can't test if they work with UNC paths

They do. E.g.,

Shell "WScript.exe \\DellLapTop2\MainDrive\Test.vbs"

If you need to wait for the script to finish before continuing with your VBA
code, see http://www.cpearson.com/excel/shellandwait.htm for two procedures,
ShellAndWaitSimple and ShellAndWaitEnhanced, that will cause your VBA code
to wait until the Shell command completes before continuing.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)
 
C

Cajeto 63

Thank you very much Nick.

It works perfectly with the WScript and I'll keep in mind that a CScript
exists just in case.


--


Regards, Cajeto 63.
 
C

Cajeto 63

Thank you Chip,
I did not think about it but the material I downloaded from your site will
be very helpfull (although it seems quite complicated for a newbie like me at
a first glance :)


--


Regards, Cajeto 63.
 
C

Cajeto 63

Chip,
I have one last question for you,
I downloaded the self contained "modShellAndWaitSimple.bas" module but I am
not sure how I integrate it to my code.

Shall I call the function before the Shell command or within the Shell
command and if so how or ???

Can you help?


--


Regards, Cajeto 63.
 
C

Chip Pearson

Import the module into your project. The "modShellAndWait" module is
entirely self-contained (as is "modShellAndWaitEnhanced"). You don't need to
change any code in that module.

To shell and wait for the Shell to end, just call the
F_7_AB_1_ShellAndWaitSimple function, passing to it the command line you
want Shell to execute. The F_7_AB_1_ShellAndWaitSimple function will call
Shell for you. So, all you have to do is

Dim Result As Boolean
Result = F_7_AB_1_ShellAndWaitSimple("WScript.exe
\\DellLapTop2\MainDrive\Test.vbs")
If Result = True Then
MsgBox "Shell'd program terminated successfully."
Else
MsgBox "There was an error."
End If

Note that there are certain system errors that will cause raise an error
than cannot be detected by VBA, and so under certain circumstances
F_7_AB_1_ShellAndWaitSimple will return True when an error occurred (these
are mostly network related errors).


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)
 
P

PhrozenRoad

i do one of these
a prior macro introduces the "connected " to display that i was able to net
use to the workstation
retval = Shell("cmd /c C:\scriptname.vbs " & Replace(c.Value, "connected ",
""), vbMaximizedFocus)
 

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