4

2つのvbsファイルがあります。

A.vbs

Class test
  public a
  public b
End Class

B.vbs

Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "C:\Users\shanmugavel.chinnago\Desktop\Test3.vbs" 

Dim ins
Set ins = new test 'Here throws "Class not defined: test"
ins.a = 10
ins.b = "SCS"

msgbox ins.a
msgbox ins.b

今、私はB.vbsファイルのようにこれを達成したいと思います。ただし、A.vbsで使用可能なクラスのインスタンスを作成しているときにエラーがスローされます。何か助けはありますか?

4

4 に答える 4

8

。.vbsを実行しても、コードが別のコードで使用できるようにはなりません。単純ですが拡張可能な戦略は、「ライブラリ」で.ExecuteGlobalを使用することです。与えられた

Lib.vbs:

' Lib.vbs - simple VBScript library/module
' use
'  ExecuteGlobal goFS.OpenTextFile(<PathTo\Lib.vbs>).ReadAll()
' to 'include' Lib.vbs in you main script

Class ToBeAShamedOf
  Public a
  Public b
End Class ' ToBeAShamedOf

およびmain.vbs:

' main.vbs - demo use of library/module Lib.vbs

' Globals
Dim gsLibDir : gsLibDir = ".\"
Dim goFS     : Set goFS = CreateObject("Scripting.FileSystemObject")

' LibraryInclude
ExecuteGlobal goFS.OpenTextFile(goFS.BuildPath(gsLibDir, "Lib.vbs")).ReadAll()

WScript.Quit main()

Function main()
  Dim o : Set o = New ToBeAShamedOf
  o.a = 4711
  o.b = "whatever"
  WScript.Echo o.a, o.b
  main = 1 ' can't call this a success
End Function ' main

あなたが得るでしょう:

cscript main.vbs
4711 whatever

(有用なクラスのシードについては、この回答を参照してください)

于 2012-05-16T09:39:03.937 に答える
2

あなたのbスクリプトはあなたのスクリプトと接触していません。そのようなコードを含める必要があります。そうすれば、bに存在していたようなコードを使用できます。

call Include("a.vbs")

Sub Include (Scriptnaam)
  Dim oFile
  Set oFile = oFso.OpenTextFile(Scriptnaam)
  ExecuteGlobal oFile.ReadAll()
  oFile.Close
End Sub
于 2012-05-16T09:36:45.283 に答える
1

B.vbsをWindowsスクリプトファイルに変換して、A.vbsを含めることができます。

于 2012-05-17T07:22:54.467 に答える
1

これは、これを行うために使用するコードです。

Sub Include(sInstFile)
    Dim f, s, oFSO
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    If oFSO.FileExists(sInstFile) Then
        Set f = oFSO.OpenTextFile(sInstFile)
        s = f.ReadAll
        f.Close
        ExecuteGlobal s
    End If
    On Error Goto 0
    Set f = Nothing
    Set oFSO = Nothing
End Sub

Include("c:\files\SSDConnection.vbs")
Include("c:\files\SSDTable.vbs")

私たちのチームのために完璧に動作します

于 2013-08-14T23:34:48.120 に答える