本帖最后由 ghouse 于 2014-11-29 19:01 编辑 有時會在論壇中看到一些很妙的寫法,有許多其實是vbs的原有功能
他們會在腳本中創建一些對象來實現某些特定的功能。
而其實我們都知道,從按鍵8之後,就已經完整支持vbs了,
可是在按鍵裡面的
教程對於vbs比較特殊的方式,很難找到
所以啦!~~~~就把一些比較常用的vbs的功能寫下來囉!~~順便自己研究研究
下邊是經常在VBScript中用到的對象列表:Set objEmail = CreateObject("CDO.Message" )
Set objIE = CreateObject("InternetExplorer.Application" )
Set objInet = CreateObject("InetCtls.Inet.1" )
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1" )
Set objExcel =CreateObject("Excel.Application" )
Set objOutlook = CreateObject("Outlook.Application" )
Set objPpt = CreateObject( " PowerPoint.Application")
Set objWord = CreateObject("Word.Application" )
Set objCal = CreateObject("MSCAL.Calendar" )
Set objQPro = CreateObject("QuattroPro.PerfectScript")
Set objWP = CreateObject("WordPerfect.PerfectScript」")
Set objConn = CreateObject("ADODB.Connection" )
Set objRecSet = CreateObject("ADODB.Recordset" )
Set objDic = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set wshNetwork = CreateObject("WScript.Network" )
Set wshShell = CreateObject("WScript.Shell")
Set objRandom = CreateObject("System.Random" )
Set objArrList = CreateObject("System.Collections.ArrayList")
Set objSortList = CreateObject("System.Collections.SortedList" )
Set xmlDoc = CreateObject( "Microsoft.XmlDom")
Set xml2Doc = CreateObject("Msxml2.DOMDocument.5.0")
Set objiTunes = CreateObject("iTunes.Application")
Set objPlayer = CreateObject("WMPlayer.OCX" )
Set objWMPlayer = CreateObject("WMPlayer.OCX.7" )
Set objReal = CreateObject( "rmocx.RealPlayerG2 Control.1")
Set objFSDialog = CreateObject("SAFRCFileDlg.FileSave")
Set objFODialog = CreateObject("SAFRCFileDlg.FileOpen" )
Set objDialog = CreateObject("UserAccounts.CommonDialog")
Set SOAPClient = CreateObject("MSSOAP.SOAPClient")
Set objWOL = CreateObject("UltraWOL.ctlUltraWOL")
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objShell = CreateObject("Shell.Application")
SetobjDeviceReplay=CreateObject("Mercury.DeviceReplay")
以下是示例演示:[hr]
描述:創建和返回一個自動化對象的引用
語法:
CreateObject(class)class 參數使用了語法servername.typename
servername: 提供對象的應用程序的名稱
typename: 對象的類型或類
說明:每個自動化對象至少提供一種對象類型。例如,一個文字處理程序可能會提供一個應用程序對象,一個文件對象和一個
工具欄對象。要創建一個自動化對象,需要把CreateObject創建的對象變量賦給一個對象變量。
示例1:
創建一個Excel應用程序對象 (「Excel.Application」 )//關閉桌面上打開的所有Excel表格
Systemutil.CloseProcessByName"excel.exe"
//創建一個新的Excel對象
Set Excel =CreateObject("Excel.Application")
//打開Excel表格
Set SExcelSheet =Excel.Workbooks.Open("C:\Users\djiao\Documents\ella\CR_Report.xlsx")
//設置表格可見
SExcelSheet.Application.visible=true
//關閉任何Excel的錯誤窗口或提示信息
Excel.DisplayAlerts = False
//重命名並保存Excel到不同的路徑下
SExcelSheet.SaveAs"C:\BaseLine.xlsx"
//關閉Excel的表格
SExcelSheet.Close
//退出Excel應用程序
Excel.Quit
示例3A:
創建文件系統對象 (「Scripting.FileSystemObject」)//將要創建的文件夾的存放路徑
strDrive = "D:\DATA"
//要創建的文件夾名稱
strfoldername= "New Folder"
//獲取文件夾的絕對路徑
strPath=strDrive&"\"&strfoldername
//創建 FileSystemObject 對象Set objFSO =CreateObject("Scripting.FileSystemObject")
//文件夾不存在時,創建文件夾If NOT objFSO.FolderExists(strPath) Then
objFSO.CreateFolder strPath
End If
//釋放文件系統對象Set objFSO = nothing
示例3B:
//Get the name of file extention
msgbox GetAnExtension("C:\ProgramFiles (x86)\HP\QuickTest Professional\bin\QTPro.exe")
Function GetAnExtension(DriveSpec)
Dimfso
Setfso = CreateObject("Scripting.FileSystemObject")
GetAnExtension= fso.GetExtensionName(Drivespec)
Setfso = nothing
End Function
示例4:
郵件發送對象(「CDO.Message」)Dim objMessage
//創建郵件發送對象
Set objMessage =CreateObject("CDO.Message")
//給郵件添加主題
objMessage.Subject = "QTP Results –Automated Testing"
objMessage.From ="QTPTesting@address.com" ' 改為你自己的郵箱地址
objMessage.To = "your@email.com"'收件人郵箱地址
objMessage.CC = "your@email.com"'CC to email id
//郵件內容objMessage.TextBody ="N.B. – Please DoNot Reply This Message Directly."
//添加附件objMessage.AddAttachment"D:\Data\file.text"
//這部分提供了遠程SMTP server的配置信息objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")= 2
//設置SMTP server的name或IP
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "smtp.163.com"
//服務器端口號(通常是 25)
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")= "someserver.domain.com"
objMessage.Configuration.Fields.Update
//發送郵件objMessage.Send
//釋放郵件對象Set objMessage = nothing
示例5:
創建WshShell對象 (「Wscript.Shell」)說明:WScript.Shell是WshShell對象的ProgID,創建WshShell對象可以運行程序、操作註冊表、創建快捷方式、訪問系統文件夾、管理環境變量。
Set WshShell =CreateObject("Wscript.Shell")
Dim Response
//顯示一個帶有yes和no的消息框
Response = MsgBox(" Please Select yourchoice as 『Yes' or 『No'.", vbYesNo)
If Response = vbYes Then
//消息框會顯示3秒鐘
WshShell.Popup"You Have Been Selected 「Yes」. Please wait.", 3, "YourSelection"
Else
//消息框會顯示5秒
WshShell.Popup"You Have Been Selected 「No」", 5, "Your Selection"
End If
Set WshShell = nothing
示例6A:
Mercury.DeviceReplay對象 (「Mercury.DeviceReplay」)說明:這個對象用來模擬鼠標的單擊和移動、鍵盤輸入等。使用該對象前,需要保證鍵盤狀態正確,如NUMLOCK是否打開等,DeviceReplay不能檢測鍵盤狀態。
//定義坐標
Dim abs_x, abs_y
abs_x = 200
abs_y = 200
//創建Mercury.DeviceReplay對象
Set objMercuryMouse = CreateObject("Mercury.DeviceReplay")
//移動鼠標到指定坐標
objMercuryMouse.MouseMove abs_x,abs_y
//鼠標左擊
objMercuryMouse.MouseClick abs_x,abs_y,LEFT_MOUSE_BUTTON
//釋放Mercury.DeviceReplay對象
Set objMercuryMouse = nothing
示例7:
字典對象(「Scripting.Dictionary」)//創建dictionary對象
Dim d
Set d =CreateObject("Scripting.Dictionary")
//給dictionary添加key和value
d.Add "a","Athens"
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
//獲取所有的item
a = d.Items
For i = 0 To d.Count -1 ' Iterate thearray.
s =s & a(i) & VBCrLF ' Create return string.
Next
print s
//根據key獲取item
print d.Item("a")
//釋放dictionary對象
Set d = nothing
Example 8A: Connection對象,數據集對象("ADODB.Connection")/("ADODB.Recordset")
Function database()
v_DBInstance= "RENPCRT8"
v_MHXMLDBPwd= "grudge"
v_MHXMLDBSchema= "Mhxmledit"
//創建數據庫連接對象和數據集對象
ConstadOpenStatic = 3
ConstadLockOptimistic = 3
ConstadUseClient = 3
SetobjConnection = CreateObject("ADODB.Connection")
SetobjRecordset = CreateObject("ADODB.Recordset")
objConnection.Open"DRIVER={Microsoft ODBC for Oracle};UID="& v_MHXMLDBSchema&" ; PWD="& v_MHXMLDBPwd & ";SERVER="&v_DBInstance &」;"
objRecordset.CursorLocation= adUseClient
objRecordset.CursorType= adopenstatic
objRecordset.LockType= adlockoptimistic
objRecordset.Source= "select SOP from MHXML.FIRMS_STG where org_id in 681915"
ObjRecordset.ActiveConnection= ObjConnection
//執行查詢語句
ObjRecordset.Open
IfObjRecordset.recordcount>0 then
Field1= ObjRecordset("SOP").Value
msgboxField1
Endif
End Function
Example 8B:
(「Database connection withoutADODB.Connection Object」)
此方法可以從數據庫中獲取值為空或者null的數據
Function GetAttorneyInfo(InField,ALid)
v_DBInstance="RENPCRT8"
v_MHXMLDBPwd="creek"
v_MHXMLDBSchema="lbmgradmin"
GetAttorneyInfo=""
//創建數據庫連接
MHXMLconnection_string="DRIVER={MicrosoftODBC for Oracle};UID="& v_MHXMLDBSchema &" ; PWD="&v_MHXMLDBPwd &";SERVER=" & v_DBInstance &";"
isMHXMLConnected= db_connect ( MHXMLConnection ,MHXMLconnection_string )
IfisMHXMLConnected=0Then '從表中獲取數據
v_Exe_SQL2="Selectlength(NVL(" & InField & ",'Data Not Found')) fromlbmgradmin.ilv_vw where ilisting_id = " & ALid
setRecSet_SOPInfo_LEN = db_execute_query( MHXMLConnection , v_Exe_SQL2 )
d_SOPInfo_Length= db_get_field_value( RecSet_SOPInfo_LEN , 0 , 0 )
v_Exe_SQL2="selectsubstr(to_char(NVL(" & InField & ",'Data NotFound')),1," & d_SOPInfo_Length & ") from lbmgradmin.ilv_vwwhere ilisting_id = " & ALid
setRecSet_SOPInfo = db_execute_query( MHXMLConnection , v_Exe_SQL2 )
RowCnt= db_get_rows_count( RecSet_SOPInfo )
IfRowCnt=1Then
d_SOPInfo=db_get_field_value(RecSet_SOPInfo , 0 , 0 )
else
datatable.SetCurrentRow(1)
d_SOPInfo=db_get_field_value(RecSet_SOPInfo , 0 , 0 )
EndIf
else
EndIf
GetAttorneyInfo=d_SOPInfo
End Function
//打開數據庫連接
Function db_connect( byRef curSession,connection_string)
Dimconnection
onerror Resume next
//創建數據庫連接對象
setconnection = CreateObject("ADODB.Connection")
IfErr.Number <> 0 then
db_connect="Error # " & CStr(Err.Number) &" " &Err.Description
err.clear
ExitFunction
EndIf
connection.Openconnection_string
IfErr.Number <> 0 then
db_connect="Error # " & CStr(Err.Number) & " " &Err.Description
err.clear
ExitFunction
EndIf
setcurSession=connection
db_connect=0
End Function
//關閉數據庫連接
Function db_disconnect( byRef curSession )
curSession.close
setcurSession = Nothing
End Function
//執行查詢語句
Function db_execute_query ( byRefcurSession , SQL)
setrs = curSession.Execute( SQL )
setdb_execute_query = rs
End Function
//獲取數據集的行數
Function db_get_rows_count( byRef curRS )
dimrows
rows= 0
curRS.MoveFirst
DoUntil curRS.EOF
rows= rows+1
curRS.MoveNext
Loop
db_get_rows_count= rows
End Function
Example 8C:
(「ADODB.Connection」)/(「ADODB.Recordset」)
此示例從Excel表單中獲取數據
//創建數據庫連接對象
Dim Get_Field
set connectToDB =CreateObject("ADODB.Connection")
connectToDB.Provider ="Microsoft.Jet.OLEDB.4.0"
connectToDB.Properties("ExtendedProperties").Value = "Excel 8.0"
connectToDB.Open "D:\Documents andSettings\pauldx\Desktop\Data.xls"
strQuery="Select Age from [Data$]WHERE Name ='Joli'"
//創建數據集對象
Set rsRecord =CreateObject("ADODB.Recordset")
rsRecord.Open strQuery,connectToDB,1,1
If rsRecord.RecordCount>0 Then
fori= 1 to rsRecord.RecordCount
Get_Field=rsRecord.Fields(0)
printGet_Field
rsRecord.movenext
next
Else
Get_Field="FieldNot Present"
End If
Example 9:
("AcroExch.App"/"AcroExch.AVDoc")此段代碼可以從pdf 文件中搜索Software單詞
備註:這段代碼只有當你安裝了acrobat 專業版安裝的時候才可以使用。如果只安裝了adobe 閱讀器的標準版,你會看到如下報錯「ActiveX component can't create object: 『AcroExch.PDDoc」」
Option Explicit
Dim accapp, acavdocu
Dim pdf_path, bReset, Wrd_count
pdf_path="C:\test.pdf"
//創建AcroExch i應用程序對象
Setaccapp=CreateObject("AcroExch.App")
accapp.Show()
//創建AVDoc對象
Setacavdocu=CreateObject("AcroExch.AVDoc")
//打開PDF文件
If acavdocu.Open(pdf_path,"")Then
acavdocu.BringToFront()
bReset=1 : Wrd_count = 0
//查找,定位並高亮指定文本
Do Whileacavdocu.FindText("software", 1, 1, bReset)
bReset=0: Wrd_count=Wrd_count+1
Wait 0, 200
Loop
End If
accapp.CloseAllDocs()
accapp.Exit()
msgbox "The word 'software' was found" & Wrd_count & "times"
Set accap=nothing
Set accapp=nothing
Example 10:
.Net 對象("DotNetFactory")說明:DotNetFactory對象允許創建一個.NET對象,並訪問其方法和屬性
//創建.Net的form對象
Dim var_CreateInstance
Set var_CreateInstance =DotNetFactory.CreateInstance("System.Windows.Forms.Form","System.Windows.Forms")
//顯示form
var_CreateInstance.Show
wait 2
//關閉form
var_CreateInstance.Close
//釋放.Net對象
Set var_CreateInstance = nothing?