• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Отчеты в Экселе

  • Автор темы Normann
  • Дата начала
N

Normann

Тема такая: у меня есть переменная типа Excel.Application
При создании отчета ее нужно инициализировать новым выделением памяти, иначе после закрытия приложеня Excel созданного этой переменной нельзя будет ей воспользоваться. Получается что на каждый отчет приходится создавать отдельное приложение. Как выйти из этой не экономичной ситуации?
 
T

Tanya

Код:
Dim Exc As Excel.Application
On Error Resume Next
[b]Set Exc = GetObject("", "Excel.Application")[/b]
If Err Then
Err.Clear
[b]Set Exc = CreateObject("Excel.Application")[/b]
'или [b]Set Exc = New Excel.Application[/b]
Exc.Visible = True
If Err Then
MsgBox "Не удалось открыть Excel" & vbCrLf & _
Err.Description
Err.Clear
End If
Else
Exc.Visible = True
End If
On Error GoTo 0
 
N

Normann

Болшое спасибо, но я надеялся увидеть решение без прибегания к On Error. Может быть есть такое решение? Может есть способ проверить существует ли (или удален) объект связанный с объектной переменной?
 
T

Tanya

Возможно просто

Код:
If Exc is Nothing Then
'приложение не создавало Excel-объект
'или приложением уже был закрыт такой объект
else
'Это приложение уже открыло Excel
end if

но, если в процессе работы пользователь,
а не приложение закрывает Excel, с которым связано приложение,
то конечно, возникнет ошибка
 
N

Normann

Вот как раз этот is nothing мне и нужен был, большое спасибо, только я его уже в нашел в справке.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!