2009-07-28 7 views
1

Je suis vraiment nouveau à VBScript. Donc, c'est mon code qui reates un fichier texte et attache un objet à lui:Comment utiliser GetObject dans VBScript

Set objExcel = CreateObject("Scripting.FileSystemObject") 
objExcel.CreateTextFile("C:\mine.txt") 

Maintenant, quelqu'un peut-il s'il vous plaît me dire comment je suis censé utiliser la fonction getObject(Pathname,[class]), comme je l'ai essayé beaucoup, mais rien ne fonctionnait sur bien? Merci et salutations

Répondre

6

La documentation de GetBSbject VBScript peut être trouvée here. Voici un exemple VBScript:

Set objExcelFile = GetObject("C:\Scripts\Test.xls") 
WScript.Echo objExcelFile.Name 
objExcelFile.Close 

Ce code vous obtiendrez l'objet classeur Excel contenu dans C: \ Scripts \ Test.xls. Vous pouvez utiliser TypeName() pour confirmer que:

Set objExcelFile = GetObject("C:\Scripts\Test.xls") 
WScript.Echo objExcelFile.Name 
WScript.Echo TypeName(objExcelFile) 
objExcelFile.Close 

La sortie sera:

test.xls 
Workbook 

Si le classeur Excel spécifié n'existe pas le script renverra une erreur. Si une instance d'Excel est déjà en cours d'exécution, vous pouvez utiliser ce code pour obtenir une référence à ce:

Set objExcel = GetObject(, "Excel.Application") 

For Each objWorkbook In objExcel.Workbooks 
    WScript.Echo objWorkbook.Name 
Next 

objExcel.Quit 

Notez la virgule avant « Excel.Application ». Le script obtient une référence à une application Excel en cours d'exécution, répertorie les noms de classeurs ouverts et quitte Excel. Si aucune instance Excel n'est en cours d'exécution, vous recevrez une erreur. C'est aussi pourquoi vous ne pouvez pas utiliser GetObject() pour obtenir une instance de Scripting.FileSystemObject - il n'y avait pas d'instance en cours d'exécution.

Vous pouvez utiliser GetObject s'il existe une instance og Scripting.FileSystemObject déjà exécutée en mémoire. Essayez ce code:

Set objFso = CreateObject("Scripting.FileSystemObject") 
Set objFso1 = GetObject("", "Scripting.FileSystemObject") 

WScript.Echo TypeName(objFso) 
WScript.Echo TypeName(objFso1) 

Vous pouvez voir que vous devez d'abord utiliser CreateObject() et quand FileSystemObject est en cours d'exécution, il est possible d'obtenir une référence, mais cela ne fait pas beaucoup de sens parce que vous avez déjà y faire référence (objFso). Ainsi, utilisez CreateObject() pour créer une instance de FileSystemObject.

+0

À moins que l'objet est une instance unique, si vous spécifiez un chemin (premier paramètre) pour la fonction 'GetObject' comme une chaîne de longueur nulle (mais pas l'omettre), l'effet est similaire à 'CreateObject', alors' GetObject' retournera une nouvelle instance de l'objet au lieu de l'instance actuelle. – omegastripes

2

Notez que également GetObject() accepte les surnoms suivants dans l'argumentation:

"iis:<metabasepath>" - Permet à un programmeur de visualiser et de modifier la fonctionnalité clé IIS pour tout serveur Web connecté physiquement à cette machine.

"java:<classname>" - Retourne une référence à un objet java non enregistré trouvé dans le dossier% system root% \ java \ trustlib à l'aide de la machine virtuelle Java.

"script:<absolutepath>" - Retourne une référence à un composant Windows Scripting non enregistré ou à un autre type de script pris en charge.

"clsid:<clsid>" - Retourne une référence à un objet par son ID de classe dans le registre.

"WinMgmts:<string>" - Permet l'accès à la fonctionnalité de base du système d'exploitation Windows avec WMI.

"OBJREF:<base64encodedstring>" - Retourne l'accès à une instance d'objet en cours d'exécution.

"queue:<clsid/progid>" - Utilisé pour activer un composant COM + en file d'attente via MSMQ.

"new:<clsid/progid>" - Permet l'instanciation de tout composant COM prenant en charge le pointeur IClassFactory (y compris les composants mis en file d'attente).

source: http://web.archive.org/web/20021001133221/http://www.aspemporium.com/aspEmporium/tutorials/GetObject/index.asp

Questions connexes