Страница: 1 |
|
Вопрос: После использования макроса не закрывается EXCEL
|
Добавлено: 12.08.15 06:54
|
|
Автор вопроса: anatoliy-2
|
Добрый день(вечер)!
Помогите пожалуйста решить следующую проблему.
При запуске Excel с использованием VBA из приложения WORD или любого другого приложения открывается Excel, выполняется всё что задумано и как бы всё хорошо.
Привожу пример: часть макроса WORD. При запуске макроса один раз всё происходит как и задумано. При запуске следующий раз вылетает по ошибке. Как удалось выяснить проблема возникает при использовании свойства Cells которое задаёт регион ячеек, при этом создаётся ещё один экземпляр Excel который не закрывается при выходе из приложения VBA. При замене выражения на
'Set xRange = MySheet.Range("A1:J10")
всё работает нормально. Но надо именно вариант
Set xRange = MySheet.Range(Cells(1, 1), Cells(10, 10))
так как только в нём есть возможность управлять ячейками программно.
Используется Office 2003, проверял в 2010 тоже самое.
Кто знает как решить данную проблему пожалуйста помогите.
12.08.2015 С уважением Анатолий.
Перед использованием макроса не забываем подключить в References библиотеки
WORD и EXCEL. Лишнюю копию которая не закрывается смотрим в Диспетчере задач.
Sub HelpMe()
Dim CountColumns As Integer
Dim objExcel As Excel.Application
Dim excelApp As Workbook
Dim MySheet As Worksheet
Dim xRange As Excel.Range
Set objExcel = New Excel.Application
Set excelApp = objExcel.Workbooks.Add
Set MySheet = excelApp.ActiveSheet
'===============ПРОБЛЕМНЫЙ КОД===========================
'Для тестирования всех троих вариантов вышестоящую строку
'с кодом закоментируйте,а нижестоящую розкоментируйте
'*******************************************************
'Так создается лишняя копия EXCEL
Set xRange = MySheet.Range(Cells(1, 1), Cells(10, 10))
'И так тоже создается лишняя копия EXCEL
'Set xRange = Range("A1:J10")
'Так работает нормально
'Set xRange = MySheet.Range("A1:J10")
'===============ПРОБЛЕМНЫЙ КОД===========================
xRange.NumberFormat = "@"
For CountColumns = 1 To 10
objExcel.ActiveSheet.Cells(CountColumns, CountColumns).Value = CountColumns
Next CountColumns
objExcel.Visible = True
objExcel.ScreenUpdating = True
'Нижерасположенные строки не оказывают
'влияния на уничтожение лишней копии Excel
Set xRange = Nothing
Set MySheet = Nothing
Set excelApp = Nothing
Set objExcel = Nothing
End Sub
Ответить
|
Страница: 1 |
Поиск по форуму