Tengo 2 archivos 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

Ahora quiero lograr esto, como en B. archivo vbs. Pero lanza error al crear una instancia para la clase disponible en A. vbs. Alguna ayuda?

InformationsquelleAutor SCSVEL | 2012-05-16

4 Comentarios

  1. 4

    .Ejecutarning un .vbs no hará que el código utilizable en otro. Un sencillo pero extensible estrategia es el uso de .ExecuteGlobal en el ‘bibliotecas’. Dado

    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

    y principal.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

    obtendrás:

    cscript main.vbs
    4711 whatever

    (cf. esta respuesta de una semilla de un útil de clase)

  2. 2

    Su b script no tiene contacto con youyr una secuencia de comandos, es necesario incluir el código como así, entonces usted puede utilizar el código de una como la que estuvieron presentes en b

    call Include("a.vbs")
    
    Sub Include (Scriptnaam)
      Dim oFile
      Set oFile = oFso.OpenTextFile(Scriptnaam)
      ExecuteGlobal oFile.ReadAll()
      oFile.Close
    End Sub
  3. 1

    Este es el código que usamos para hacer esto.

    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")

    Funciona perfecto para nuestro equipo

Dejar respuesta

Please enter your comment!
Please enter your name here