VBAからVBSを実行して結果を受け取るのは色々できるとは思いますが
WScript.Stdout.WriteLine で出力して、
WScript.ShellのStdOut.ReadAllで受信するのがよくあるやり方ではないでしょうか。
具体的には
VBS
1'(aa.vbs)
2dim a,b,c
3'
4'計算処理でa,b,cの値を算出
5a=4
6b=5
7c=6
8'
9WScript.Stdout.WriteLine "値1:" & a & vbCrLf & "値2:" & b & vbCrLf & "値3:" & c
10WScript.Quit(0)
11
VBA
1Public Sub test()
2 Dim t_Wsh 'As IWshRuntimeLibrary.WshShell
3 Dim t_Exex 'As IWshRuntimeLibrary.WshExec
4 Dim t_StdOut As String
5 Dim t_Sp() As String
6 Dim t_Sp2() As String
7 Dim t_I As Long
8 Dim a
9 Dim b
10 Dim c
11 Dim t_VbsPath As String
12 t_VbsPath = "C:\AAA\aa.vbs"
13
14 Set t_Wsh = CreateObject("WScript.Shell")
15
16 Set t_Exex = t_Wsh.Exec("CScript //Nologo " & t_VbsPath)
17 Do While t_Exex.Status = 0
18 DoEvents
19 Loop
20
21 t_StdOut = t_Exex.StdOut.ReadAll
22
23 Debug.Print "ExitCode:" & t_Exex.ExitCode
24
25 Set t_Exex = Nothing
26
27 t_Sp = Split(t_StdOut, vbCrLf)
28 For t_I = 0 To UBound(t_Sp)
29 t_Sp2 = Split(t_Sp(t_I), ":")
30 If UBound(t_Sp2) > 0 Then
31 Select Case t_Sp2(0)
32 Case "値1": a = t_Sp2(1)
33 Case "値2": b = t_Sp2(1)
34 Case "値3": c = t_Sp2(1)
35 End Select
36 End If
37 Next
38
39 Debug.Print "値1:" & a & vbCrLf & "値2:" & b & vbCrLf & "値3:" & c
40
41End Sub
42
まぁ。結果の受け方は、てきとうですが…何となくやりかたはわかるのではないでしょうか。
受信できるのは文字列に限りますけどね…
Runについては、既に回答がなされているので省略します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/09 11:33