2012-10-18 91 views
0

我編寫了一個vbScript來爲每個用戶的計算機在登錄時收集計算機信息,並且Id希望腳本將信息記錄到服務器上的Excel工作表中,每臺計算機都有自己的行。使用vbscript搜索Excel中的所有單元格使用vbscript編寫Excel

我這樣寫了6年前,但失去了腳本,並沒有接觸VBScript以來。

所以我需要做的是,

  1. 檢查所有具有價值
  2. 比較該值的值保存在計算機的名稱
  3. 細胞在B列(這將是計算機名)
  4. 如果匹配,編寫計算機信息到該行
  5. 如果沒有比賽,然後寫信息的第一個空行

我不知道從哪裏開始,因爲vbScript對我來說很陌生。

編輯 - 我有這個循環到目前爲止,並回聲來測試它,但它只能到1,而我有6列與列中的值。我試圖有條件檢查值的單元格值我知道存在,我得到一個運行時錯誤。

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("test.xlsx") 
Do While objExcel.ActiveCell.Offset(iRow,0).Value<>"" 
    WScript.Echo iRow 
    If objExcel.Cells(iRow,0).Value = "three" Then 
    WScript.Echo "three" 
    End If 
    iRow = iRow+1 
Loop 
WScript.Quit 
+0

明顯。我無法找到有用的東西,但也許我的查詢是無效的。 – rugbert

+0

是的。另外,你需要閱讀[問],嘗試一些東西,發佈你的代碼,並徵求有關它的建議。 – RASG

+0

查看[這些腳本](http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/excel/)如何將數據輸入到Excel表格中。使用[a(for)循環](http://wiki.mcneel.com/developer/vbslooping)遍歷行。 **如果**找到正確的單元**或**,則遇到空單元**然後** **退出** ** for循環。將計算機名更新到最後找到的單元格的單元格右側。 – AutomatedChaos

回答

2

你最有可能有一個On Error Resume Next地方在你的腳本,這使得代碼失敗默默。

據我可以從你的代碼告訴這可能是發生了什麼事:

  • Do While objExcel.ActiveCell.Offset(iRow,0).Value<>""

    腳本檢查是否在當前單元格的偏移(iRow,0)細胞是空的,如果它沒有進入循環。

  • WScript.Echo iRow

    腳本呼應的iRow當前值(可能爲0)。

  • If objExcel.Cells(iRow,0).Value = "three" Then

    腳本嘗試訪問細胞(iRow,0)單元偏移(iRow,0)),該失敗,因爲Cells()不是基於零的。第一行以及第一列在Cells()屬性中具有索引1。更不用說,與Cells()你必須使用絕對的行和列的數字,而不是相對於ActiveCellOffset()

要解決這個問題,我會刪除On Error Resume Next和簡單地使用Cells()代替ActiveCell.Offset()

iRow = 1 
Do While objExcel.Cells(iRow, 2).Value <> "" 
    WScript.Echo iRow 
    If objExcel.Cells(iRow, 2).Value = "three" Then 
    WScript.Echo "three" 
    End If 
    iRow = iRow + 1 
Loop 
+0

真棒夥計,好吧,那就是它! – rugbert

相關問題