Hi, Karl. No, this is only for me. I'm not about to unleash my messes
on the world at large!! <g
Okay - I'm trying to take this one step at a time. I've got a vbs file
with
Sub TestMe(str, x)
Set Args = WScript.Arguments
This = Args(0)
That = Args(1)
wscript.echo This
wscript.echo That
End Sub
and I've got a Word macro with
Sub TestMyScriptHere()
Dim str As String
Dim x As Long
str = "ABC"
x = 2
Dim FPath As String
FPath = "C:\Documents and Settings\edward.millis\My
Documents\Scripting\"
Dim wsh, proc
Set wsh = CreateObject("WScript.Shell")
Set proc = wsh.Exec("cscript FPath & MacroTest.vbs str x")
End Sub
I ran it, and got a brief flash of a command prompt window (Word
&Windows XP) - no "echo" message boxes. So I at least got the macro to
open the script file. I didn't get the variables into the script,
though. Is there hope for me? Do I need years of intnse training? Or
will a small drop-kick in the right direction get me going?
Ed
Karl E. Peterson wrote:
Ed wrote:
I've been looking at newsgroup posts and VBScript sites all morning,
and can't seem to find a simple explanation and method for calling a
script from a Word or Excel macro and passing a variable into the
script, then returning the result of whatever the script does into the
macro.
That can mean there isn't any simple way to do this, and I need to
stop looking. In the hopes, however, that I am too unlearned to
recognize the answer when I see it, I'd like to just ask: how do I do
this?
Simple? It depends. Are you planning to "ship" this to computers outside
your control? If not, yeah, there's a way that isn't overly involved.
You'll, essentially, have to "lower yourself" to using VBS within your VBA.
Fire off the VBS scripts with something like ("air code" alert! <g) this:
Set wsh = CreateObject("WScript.Shell")
Set proc = wsh.Exec("cscript your.vbs param1 param2")
Spin cycles in your VBA app, waiting for the VBS to complete:
' Wait for application to exit
Do While proc.Status = 0
Sleep 1 'Need to add the API declaration to your module!
Loop
Retrieve the command line parameters within the VBS like this (actual
example taken from a script I use here):
' http://www.winguides.com/scripting/reference.php?id=117
Set Args = WScript.Arguments
If Args.Count = 2 Then
' First argument is username; Second is password
User = LCase(Args(0))
Pass = Args(1)
WScript.Echo "Login as: " & User
Else
User = LCase(Network.UserName)
End If
Have your VBS use the optional ErrorCode parameter to the Quit method to
send a return value:
http://www.winguides.com/scripting/reference.php?id=111
Read that value with:
' http://www.codecomments.com/archive2...-1-335409.html
Debug.Print "VBS Return Value: "; proc.ExitCode
Hope this helps!
--
Working without a .NET?
http://classicvb.org/