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.
À 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