我对VBScript很陌生。所以这是我的代码,它创建一个文本文件并附加一个对象:
Set objExcel = CreateObject("Scripting.FileSystemObject")
objExcel.CreateTextFile("C:\mine.txt")
现在有人可以告诉我我应该如何使用getObject(Pathname,[class])
功能,因为我尝试了很多但没有什么效果好吗?谢谢和问候
答案 0 :(得分:6)
可以找到VBScript GetObject文档here。这是一个VBScript示例:
Set objExcelFile = GetObject("C:\Scripts\Test.xls")
WScript.Echo objExcelFile.Name
objExcelFile.Close
此代码将为您提供C:\ Scripts \ Test.xls中包含的Excel Workbook对象。您可以使用TypeName()来确认:
Set objExcelFile = GetObject("C:\Scripts\Test.xls")
WScript.Echo objExcelFile.Name
WScript.Echo TypeName(objExcelFile)
objExcelFile.Close
输出将是:
test.xls
Workbook
如果指定的Excel工作簿不存在,脚本将返回错误。如果Excel的实例已在运行,您可以使用此代码获取对它的引用:
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实例的原因 - 没有正在运行的实例。
如果存在已在内存中运行的实例og 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的实例。
答案 1 :(得分:4)
注意,同样GetObject()
接受以下参与者的参数:
"iis:<metabasepath>"
- 允许程序员查看和更改物理连接到此计算机的任何Web服务器的关键IIS功能。
"java:<classname>"
- 使用Java虚拟机返回对%system root%\ java \ trustlib文件夹中的未注册java对象的引用。
"script:<absolutepath>"
- 返回对未注册的Windows Scripting Component或其他支持的脚本类型的引用。
"clsid:<clsid>"
- 通过注册表中的类ID返回对象的引用。
"WinMgmts:<string>"
- 允许使用WMI访问基本Windows操作系统功能。
"OBJREF:<base64encodedstring>"
- 返回对正在运行的对象实例的访问权。
"queue:<clsid/progid>"
- 用于通过MSMQ激活排队的COM +组件。
"new:<clsid/progid>"
- 允许实例化支持IClassFactory指针的任何COM组件(包括排队组件)。