Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

VB <-> Excel

524
21 июня 2005 года
BurAn
42 / / 20.05.2000
Здравствуй All
Вопрос: Есть 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
275
22 июня 2005 года
pashulka
985 / / 19.09.2004
Ну если ничего не помогает, то можно попробовать примерно такой вариант :

Код:
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
524
24 июня 2005 года
BurAn
42 / / 20.05.2000
Цитата:
Originally posted by pashulka
Ну если ничего не помогает, то можно попробовать примерно такой вариант : ... CUT



Спасибо.

Этим способом работает отлично. Хотя я так и не понял что я делал не верно.

7.1K
24 июня 2005 года
likhobory
87 / / 18.05.2005
Цитата:
Originally posted by BurAn
Спасибо.

Этим способом работает отлично. Хотя я так и не понял что я делал не верно.


ExcelApplication.Selection.EntireRow.Insert

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог