功能:在excel中對ip與loginType這兩列進行遍歷讀取。本程序依賴於excel文件的"sheet2"表單中具有這兩列。 dim dictTarget, objExcel '從交換機台賬中提取ip/loginType數據 getDictTarget objExcel.Quit 'Msgbox dictTarget.Count '遍歷所有ip,進行登錄 keySet = dictTarget.keys for i = 0 to dictTarget.Count -1 ip = keySet(i) loginType = dictTarget.Item(ip) Msgbox ip&" : "&loginType next function getDictTarget '功能:打開excel並將"ip","登錄方式"這兩列值提取為dictionary Set dictTarget = CreateObject("Scripting.Dictionary") Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("D:\桌面\Desktop\1.xlsx") objExcel.WorkSheets("Sheet2").Activate intColOfIP = getColNumInRowByValue(1, "IP") 'Msgbox "intColOfIP : "&intColOfIP intColOfLoginType = getColNumInRowByValue(1, "登錄方式") 'Msgbox "intColOfLoginType : "&intColOfLoginType intRow = 2 Do Until objExcel.Cells(intRow, intColOfIP).Value = "" ip = objExcel.Cells(intRow, 1).Value loginType = objExcel.Cells(intRow, 2).Value dictTarget.add ip, loginType intRow = intRow + 1 Loop end function function getColNumInRowByValue(intRow, strValue) '獲取指定行中指定內容的單元格的列值 intCol = 1 intResult = -1 value = "tmp" Do while value <> "" value = objExcel.Cells(intRow, intCol).Value if value = strValue then intResult = intCol exit do end if intCol = intCol + 1 Loop getColNumInRowByValue = intResult 'Msgbox "intResult : "&intResult end function
問題:在win7中測試一切正常。然而在xp中測試發現,運行結束后任務管理器中會殘留一個EXCEL.EXE無法退出,即使已經調用了“objExcel.Quit”語句。