Страница: 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 | 
 
		
			Поиск по форуму