2015-12-11 4 views
2

У меня есть этот код, который я написал в VBScript для wincc, и после его запуска приложение Excel все еще работает, и после этого сценария проект не работает должным образом. Что я могу сделать, чтобы закрыть приложение 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 
+5

Возможно, что проблемный код с 'On Error Resume Next' - не самая лучшая идея. –

+3

'ExcelObject.Workbooks.Close False | ExcelObject.Workbooks.SAVE' противоречиво. Попробуйте установить 'excelobject = nothing'? – findwindow

+1

Когда вы читаете свой код, попробуйте сделать это с учетом того, что то, что вы делаете, имеет смысл. Вы не можете сохранить «Книгу» после того, как вы закрыли «Книгу», очевидно, больше, чем вы можете пройти через дверной проем после того, как вы закрыли дверь; он уже закрыт. Вам также необходимо установить переменную 'ExcelObject' в' Nothing' после выхода из нее, чтобы освободить ссылку, которая должна позволить остановить приложение Excel. –

ответ

0

почему Excel не следует правилам COM при использовании в качестве объекта приложения. Несомненно, по какой-то причине совместимости.

Он выполняет правила COM как объект документа.

So Set WorkbookObject = GetObject("C:\Parametri\Codificari.xls") и теперь, когда он выходит из сферы действия, он будет закрываться до тех пор, пока он не будет виден. Так что просто сохраните его, и он будет закрыт, когда ваш скрипт закончится. Вам, вероятно, нужна только половина линий.

2
  1. Стандартный способ закрыть (без обработки ошибок)

    WorkbookObject.Save 
    WorkbookObject.Close False 
    ExcelObject.Quit 
    Set WorkbookObject= Nothing 
    Set ExcelObject = Nothing 
    
  2. Убедитесь, что все ссылки полностью квалифицированные см here. По быстрому просмотру это не выпрыгивает из вашего кода.

Смежные вопросы