既然你只放了你的代碼的一個片段,我不知道你是否把這兩個語句。應該有2個電話:
objWorkbook2.Save
objWorkbook2.Close
您還可以使用下面的代碼隔離在一個函數中。
來源:http://automation-beyond.com/2009/05/25/excel-vbscript/
Public Function ExcelWorksheetCompare(ByVal sWorkbook1, ByVal sWorksheet1, ByVal sWorkbook2, ByVal sWorksheet2, ByVal objParameter)
Dim boolRC, boolSheetExists
Dim FSO, XLHandle
Dim XLBook1, XLBook2, XLSheet1, XLSheet2
Dim Iter, objCell
‘Verify both files exist
Set FSO = CreateObject(」Scripting.FileSystemObject」)
boolRC = FSO.FileExists(sWorkbook1)
If Not boolRC Then
ExcelWorksheetCompare = FALSE
Exit Function
End If
boolRC = FSO.FileExists(sWorkbook2)
If Not boolRC Then
ExcelWorksheetCompare = FALSE
Exit Function
End If
Set FSO = Nothing
Set XLHandle = CreateObject(」Excel.Application」)
XLHandle.DisplayAlerts = False
‘Open workbook1
Set XLBook1 = XLHandle.WorkBooks.Open(sWorkbook1)
‘Verify sheet exists (1)
If isNumeric(sWorksheet1) Then
sWorksheet1 = CInt(sWorksheet1)
If (sWorksheet1 > 0) AND (sWorksheet1 <= XLBook1.Worksheets.Count) Then
Set XLSheet1 = XLBook1.Worksheets(sWorksheet1)
boolSheetExists = TRUE
Else
boolSheetExists = FALSE
End If
Else
boolSheetExists = FALSE
For Iter = 1To XLBook1.Worksheets.Count
If XLBook1.Worksheets(Iter).Name = sWorksheet1 Then
Set XLSheet1 = XLBook1.Worksheets(Iter)
boolSheetExists = TRUE
End If
Next
End If
If Not boolSheetExists Then
XLBook1.Close
XLHandle.Quit
Set XLBook1 = Nothing
Set XLHandle = Nothing
ExcelWorksheetCompare = FALSE
Exit Function
End If
‘Open workbook2
Set XLBook2 = XLHandle.WorkBooks.Open(sWorkbook2)
‘Verify sheet exists (2)
If isNumeric(sWorksheet2) Then
sWorksheet2 = CInt(sWorksheet2)
If (sWorksheet2 > 0) AND (sWorksheet2 <= XLBook2.Worksheets.Count) Then
Set XLSheet2 = XLBook2.Worksheets(sWorksheet2)
boolSheetExists = TRUE
Else
boolSheetExists = FALSE
End If
Else
boolSheetExists = FALSE
For Iter = 1To XLBook2.Worksheets.Count
If XLBook2.Worksheets(Iter).Name = sWorksheet2 Then
Set XLSheet2 = XLBook2.Worksheets(Iter)
boolSheetExists = TRUE
End If
Next
End If
If Not boolSheetExists Then
XLBook1.Close
XLBook2.Close
XLHandle.Quit
Set XLSheet1 = Nothing
Set XLBook1 = Nothing
Set XLBook2 = Nothing
Set XLHandle = Nothing
ExcelWorksheetCompare = FALSE
Exit Function
End If
‘Mark range
‘Compare and mark mismatches red
For Each objCell In XLSheet2.UsedRange
If objCell.Value <> XLSheet1.Range(objCell.Address).Value Then
objCell.Interior.ColorIndex = 3
Else
objCell.Interior.ColorIndex = 0
End If
Next
‘Save and close
XLBook1.Close
XLBook2.Save
XLBook2.Close
XLHandle.Quit
Set XLSheet1 = Nothing
Set XLSheet2 = Nothing
Set XLBook1 = Nothing
Set XLBook2 = Nothing
Set XLHandle = Nothing
ExcelWorksheetCompare = TRUE
End Function
謝謝
阿爾伯特Gareev
http://automation-beyond.com/
您提供的所有鏈接都是關於使用Excel手動操作的。通過COM自動化以編程方式完成時不同。 – 2009-10-26 14:00:49