我在VBScript中为wincc编写了这段代码,在运行它之后,Excel应用程序仍在运行,并且在此脚本之后项目无法正常工作。我该怎么做才能关闭Excel应用程序?
这是脚本:
Dim fso
Dim rowcount
Dim ExcelObject
Dim WorkbookObject
Dim file
Dim i
Dim tg
Dim objSheet1
Dim objSheet2
'Set Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ExcelObject = CreateObject("Excel.Application")
file="C:\Parametri\Codificari.xls"
Set WorkbookObject = ExcelObject.Workbooks.Open(file)
'Set objSheet1 = WorkbookObject.Worksheets(1)
Set objSheet2 = WorkbookObject.Worksheets(2)
objSheet2.Cells(1,1)=SmartTags("locatie_defect")
If (fso.FileExists(file)) Then
'Raw numbering in Excel
rowcount = objSheet2.UsedRange.Rows.count
For i=3 To rowcount
tg="defect_"&i-2
SmartTags(tg)=objSheet2.Cells(i,2)
Next
End If
On Error Resume Next
'Save and close excel
ExcelObject.DisplayAlerts = False
ExcelObject.Workbooks.Close False
ExcelObject.Workbooks.Save
ExcelObject.Quit
On Error Resume Next
答案 0 :(得分:2)
关闭的标准方式(无错误处理)
WorkbookObject.Save
WorkbookObject.Close False
ExcelObject.Quit
Set WorkbookObject= Nothing
Set ExcelObject = Nothing
确保所有引用都是完全限定的,请参阅here。快速查看一下,这不会从您的代码中跳出来。
答案 1 :(得分:0)
出于某种原因,Excel在用作app对象时不遵循COM规则。毫无疑问是出于兼容性的原因。
它遵循COM规则作为doc对象。
所以Set WorkbookObject = GetObject("C:\Parametri\Codificari.xls")
现在当它超出范围时,只要它不可见就会关闭。所以只需保存它,它将在脚本结束时关闭。你可能只需要一半的线。