我无法关闭Excel应用程序

时间:2015-12-11 23:39:44

标签: excel vbscript

我在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

2 个答案:

答案 0 :(得分:2)

  1. 关闭的标准方式(无错误处理)

    WorkbookObject.Save
    WorkbookObject.Close False
    ExcelObject.Quit
    Set WorkbookObject= Nothing
    Set ExcelObject = Nothing
    
  2. 确保所有引用都是完全限定的,请参阅here。快速查看一下,这不会从您的代码中跳出来。

答案 1 :(得分:0)

出于某种原因,Excel在用作app对象时不遵循COM规则。毫无疑问是出于兼容性的原因。

它遵循COM规则作为doc对象。

所以Set WorkbookObject = GetObject("C:\Parametri\Codificari.xls")现在当它超出范围时,只要它不可见就会关闭。所以只需保存它,它将在脚本结束时关闭。你可能只需要一半的线。