我很新手VBScript。这是我的代码,它创建一个文本文件并附加一个对象:
Set objExcel = CreateObject("Scripting.FileSystemObject")
objExcel.CreateTextFile("C:\mine.txt")
我该如何使用getObject(Pathname,[class])
函数?
我很新手VBScript。这是我的代码,它创建一个文本文件并附加一个对象:
Set objExcel = CreateObject("Scripting.FileSystemObject")
objExcel.CreateTextFile("C:\mine.txt")
我该如何使用getObject(Pathname,[class])
函数?
VBScript GetObject的文档可以在这里找到。以下是VBScript示例:
Set objExcelFile = GetObject("C:\Scripts\Test.xls")
WScript.Echo objExcelFile.Name
objExcelFile.Close
这段代码可以获取C:\Scripts\Test.xls中包含的Excel工作簿对象。您可以使用TypeName()函数确认它:
Set objExcelFile = GetObject("C:\Scripts\Test.xls")
WScript.Echo objExcelFile.Name
WScript.Echo TypeName(objExcelFile)
objExcelFile.Close
test.xls
Workbook
Set objExcel = GetObject( , "Excel.Application")
For Each objWorkbook In objExcel.Workbooks
WScript.Echo objWorkbook.Name
Next
objExcel.Quit
注意在“Excel.Application”之前的逗号。脚本获取正在运行的Excel应用程序的引用,列出打开的工作簿名称并退出Excel。如果没有正在运行的Excel实例,则会收到错误消息。这也是为什么无法使用GetObject()获取Scripting.FileSystemObject的实例 - 没有正在运行的实例。
如果在内存中已经运行了Scripting.FileSystemObject的实例,则可以使用GetObject。请尝试以下代码:
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFso1 = GetObject("", "Scripting.FileSystemObject")
WScript.Echo TypeName(objFso)
WScript.Echo TypeName(objFso1)
你可以看到,首先需要使用CreateObject()函数,在FileSystemObject运行时获取对其的引用。但这样做并没有太多意义,因为你已经有一个对它的引用(objFso)。因此,使用CreateObject()来创建一个FileSystemObject实例。
GetObject()
还接受以下参数中的单个标识符:"iis:<metabasepath>"
- 允许程序员查看和更改连接到此计算机的任何Web服务器的关键IIS功能。"java:<classname>"
- 使用Java虚拟机返回在%system root%\java\trustlib文件夹中找到的未注册Java对象的引用。"script:<absolutepath>"
- 返回对未注册的Windows脚本组件或其他支持的脚本类型的引用。"clsid:<clsid>"
- 通过其在注册表中的类ID返回对象的引用。"WinMgmts:<string>"
- 允许使用WMI访问基本的Windows操作系统功能。"OBJREF:<base64encodedstring>"
- 返回对正在运行的对象实例的访问。"queue:<clsid/progid>"
- 通过MSMQ激活排队的COM+组件。"new:<clsid/progid>"
- 允许实例化支持IClassFactory指针(包括排队组件)的任何COM组件。
GetObject
函数的路径名参数(第一个参数)指定为空字符串(但不要省略它),则效果类似于CreateObject
,因此GetObject
将返回该对象的新实例而不是当前实例。 - omegastripesSet objExcel = GetObject( , "Excel.Application")
。但是不要使用Set objExcel = WScript.GetObject( , "Excel.Application")
,因为它会抱怨缺少参数。我以前从未意识到这种差异。 - J. Woolley