Private Sub MySub(iFileName As String)
On Error GoTo ErrorHandler
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = True
.Workbooks.Open iFileName
With .Worksheets(1)
.Unprotect
.Range("$A$1").EntireRow.Insert
.Parent.Close True
End With
.Quit
End With
Set xlApp = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
End Sub
VB <-> Excel
Вопрос: Есть excel файл. Мне его надо открыть, отредактировать, распечатать и закрыть. Так же надо закрыть и Excel приложение.
Если я вношу какие то изменения в файл (в данном случае вставляю 1-у строку), то он по окончании процедуры закрывается не корректно. Excel.exe остается висеть в диспетчере задач и при следующем вызове этой же процедуры, создается второй объект Excel и возникает ошибка Err.Number = 91 в помеченной строке. Если я закрываю проект, то и Excel.exe удаляется из диспетчера задач.
Если я удалю эту строку, то получается что я с файлом ни чего не делаю и все работает корректно. Т.е. по окончанию процедуры Excel.exe умирает. И в следующий раз ошибки не возникает.
На улице жара, а я морожу!!! Где засада?
Private Sub MySub(filename As String)
On Error GoTo err_h
Set ExcelApplication = CreateObject("excel.application")
Set ExcelWorkbook = ExcelApplication.Workbooks.Open(filename)
Set ExcelWorksheet = ExcelWorkbook.Worksheets.Item(1)
ExcelApplication.Visible = True
ExcelWorksheet.Unprotect
ExcelWorksheet.Range("$A$1", "$A$1").Select
Selection.EntireRow.Insert '<- TUT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ExcelApplication.Visible = False
ExcelWorkbook.Save
ExcelWorkbook.Close
ExcelApplication.Quit
Set ExcelWorksheet = Nothing
Set ExcelWorkbook = Nothing
Set ExcelApplication = Nothing
Exit Sub
err_h:
MsgBox Err.Number & " - " & Err.Description
End Sub
Ну если ничего не помогает, то можно попробовать примерно такой вариант :
Цитата:
Originally posted by pashulka
Ну если ничего не помогает, то можно попробовать примерно такой вариант : ... CUT
Ну если ничего не помогает, то можно попробовать примерно такой вариант : ... CUT
Спасибо.
Этим способом работает отлично. Хотя я так и не понял что я делал не верно.
Цитата:
Originally posted by BurAn
Спасибо.
Этим способом работает отлично. Хотя я так и не понял что я делал не верно.
Спасибо.
Этим способом работает отлично. Хотя я так и не понял что я делал не верно.
ExcelApplication.Selection.EntireRow.Insert