Задумчивый EXCEL

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Vzavr
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 26.09.2005 (Пн) 13:29

Задумчивый EXCEL

Сообщение Vzavr » 26.09.2005 (Пн) 14:29

Есть тестовая программа (форма + одна кнопка), которая вставляет пару строчек в файл EXCEL'я.
С момента первого нажатия на кнопку до появления файла Excel'я с результатами уходит секунд 5, а то и больше. Однако все последующие нажатия на эту кнопку обрабатываются меньше чем за секунду.
Кто-нибудь может подсказать, с чем это связано?

Подключены сборки:
Microsoft Excel 11.0 Object Library
Microsoft Office 11.0 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3

Обработчик кнопки
Код: Выделить всё

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oExcel As Excel.Application
        Dim oBook As Excel.Workbook
        Dim oSheet As Excel.Worksheet
        Dim oRange As Excel.Range
        Dim sFile As String
        ' работа с Экселем
        oExcel = New Excel.Application
        oExcel.Visible = True
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.ActiveSheet
        ' заполнения файла Эксель
        ' заполнение комментариев
        oRange = oSheet.Range("A1")
        If Not oRange.Comment Is Nothing Then
            oRange.Comment.Delete()
        End If
        oRange.AddComment("Комментарий")
        ' заполнение значений (y,x)
        oSheet.Cells(1, 4).Value = "Значение ячейки Y=1 и X=4"
        ' работа с памятью
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oRange)
        oRange = Nothing
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
        oSheet = Nothing
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
        oBook = Nothing
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
        oExcel = Nothing
        GC.Collect()
End Sub

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 26.09.2005 (Пн) 20:48

Когда нажимаешь первый раз открываеться ексель, потом этого не проиходит

Vzavr
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 26.09.2005 (Пн) 13:29

Сообщение Vzavr » 27.09.2005 (Вт) 7:52

Ramzes писал(а):Когда нажимаешь первый раз открываеться ексель, потом этого не проиходит

Перед каждым нажатием на кнопку я закрываю EXCEL.

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 27.09.2005 (Вт) 12:07

Ramzes писал(а):Когда нажимаешь первый раз открываеться ексель, потом этого не проиходит


Все правильно. Вот на этой строчке итормозит:
Код: Выделить всё
oExcel = New Excel.Application


Посмотри в отладлочном режиме.

Vzavr
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 26.09.2005 (Пн) 13:29

Сообщение Vzavr » 28.09.2005 (Ср) 9:54

Dmitriy Solomnikov писал(а):
Ramzes писал(а):Когда нажимаешь первый раз открываеться ексель, потом этого не проиходит


Все правильно. Вот на этой строчке итормозит:
Код: Выделить всё
oExcel = New Excel.Application


Посмотри в отладлочном режиме.


В отладчике я проверял - тормоза начинаются еще до начала работы обработчика. А вот как раз сам обработчик исплняется на ура.

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 28.09.2005 (Ср) 12:34

значит это из-за особенности компилятора .NET. Тут со всеми программами такая фигня - в первый раз долго, потом быстро.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList