2016-03-10 85 views
0

我正在使用vbscript(.vbs文件)來執行讀取/寫入Excel的操作。腳本與多個Excel工作簿並行工作

該腳本將打開一個現有的excel文件並向其中讀取/寫入數據。

如果只有一個excel文件打開,那麼沒有問題。

但是,當腳本正在運行時,如果我打開另一個excel文件並專注於此新打開的文件,則該腳本將失敗並退出。

我正在使用工作簿的句柄讀/寫。樣本在下面。

Set xlobj = GetObject(, "Excel.Application") 
Set wbobj = xlobj.Workbooks.Open(filename) 
For iRow = FIRSTROW To LASTROW 
    With wbobj.Sheets(sheetname) 
     If .Range("B" & CStr(iRow)) = "FREE" Then 
      .Range("B" & CStr(iRow)).Font.Color = RGB(0, 0, 255) 
      .Range("D" & CStr(iRow)) = vbNullString 
     Else 
      .Range("B" & CStr(iRow)).Font.Color = RGB(255, 0, 0) 
     End If 
    End With 
Next 

需要你的幫助,如果有一種方法,使即使用戶正在使用不同的Excel工作簿和/或如果有更好的選擇去它的劇本工作。

謝謝。 B

+0

您可能會考慮顯示腳本的其餘部分...... wbobj看起來是正確的,但可能還有其他您未公開的問題。 –

+0

@DavidZemens,提供一種執行讀腳本的主要部分的快照/寫 '設置xlobj = GetObject的( 「Excel.Application」)' 集wbobj = xlobj.Workbooks.Open(文件名) 對於如果.Range(「B」&CStr(iRow))=「FREE」那麼 .Range(「B」&CStr(iRow))。Font.Color = RGB(0,0,255) .Range(「D」&CStr(iRow))= vbNullString ... Else .Range(「B」&CStr(iRow))。Font.Color = RGB(255 ,0,0) End If End With Next ... –

+1

代碼屬於問題的主體。它在評論部分非常難以辨認... –

回答

0

讓您的代碼創建並使用自己的Excel實例,而不使其可見。您的代碼會在完成時關閉該Excel實例(請記住在任何終止錯誤處理程序中也這樣做)

這樣就不會干擾用戶的活動。

相關問題