Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не закрывается Excel
 
 автор: willy-nilly   (11.07.2008 в 16:22)   личное сообщение
 
 

Не понимаю, все книжки перечитала - и не работает
Excel закрываю, Quit и Nothing поставлен. А в процессах от все равно висит.

Dim FS As Variant
Dim MyFile As String
Dim XL As Object
Dim WS As Worksheet
Dim I as Long

Set FS = Application.FileSearch
Set XL = CreateObject("excel.application")
With FS
.LookIn = "C:\Получено"
.SearchSubFolders = True
.FileName = "*.xls"
If .Execute > 0 Then
For I = 1 To .FoundFiles.Count
MyFile = .FoundFiles(I) 'имя файла
XL.Workbooks.Open FileName:=MyFile
DoCmd.TransferSpreadsheet acImport, 8, "22_temp", MyFile, False, "A3:N120"
XL.ActiveWindow.Close SaveChanges:=False
Next I
End If
End With
XL.Quit
Set XL = Nothing

  Ответить  
 
 автор: KrukVN   (11.07.2008 в 17:23)   личное сообщение
 
 

Раз Вы написали:
Dim WS As Worksheet
то должны были объявить и библиотеку excel в референсах. или может забыли?

  Ответить  
 
 автор: час   (11.07.2008 в 20:50)   личное сообщение
 
 

в начале кода объявим
xlaProd As Excel.Application
WrkBk As Excel.Workbook

потом присвоим
Set WrkBk = CreateObject("Excel.Sheet")
Set xlaProd = WrkBk.Parent

а в конце
WrkBk.Close
xlaProd.Quit 'вот то, что закроет. иначе прооблеммммммммм
Set WrkBk = Nothing
Set xlaProd = Nothing

  Ответить  
 
 автор: willy-nilly   (14.07.2008 в 18:41)   личное сообщение
 
 

Большое спасибо. Все равно не работает. Excel сидит в памяти по-прежнему и не стопится.

  Ответить  
 
 автор: Bellerofont   (12.07.2008 в 10:44)   личное сообщение
 
 

Зачем вы вообще создаете Application и открываете Workbook?
Для выполнения DoCmd.TransferSpreadsheet это не нужно.

  Ответить  
 
 автор: willy-nilly   (14.07.2008 в 18:43)   личное сообщение
 
 

Спасибо, но там еще идет обработка снятия зпщиты с листа, в зависимости от того, что в нем написано

  Ответить  
 
 автор: час   (14.07.2008 в 19:05)   личное сообщение
 
 

Простите, где там?.........

  Ответить  
 
 автор: Анатолий (Киев)   (14.07.2008 в 19:27)   личное сообщение
 
 

1. Попробуйте после Set XL = CreateObject("excel.application") добавить:
XL.WindowState = xlMinimized
XL.Visible = True

2.
XL.Workbooks.Open FileName:=MyFile
DoCmd.TransferSpreadsheet acImport, 8, "22_temp", MyFile, False, "A3:N120"
Эти команды я бы поменял местами, а еще лучше - использовать CopyFromRecordset.

  Ответить  
 
 автор: willy-nilly   (16.07.2008 в 11:47)   личное сообщение
 
 

И добавила, и переставила - ничего.
А помогло - вот что:
в еконец цикла вставила Quit:
.................
XL.Quit
Next I
End If
End With
Set XL = Nothing
Теперь работает, правда, не очень понятно, как
Я просто сидела и на каждой строке отладки смотрела, сколько памяти забирает Excel.
Увеличиваться память стала после строки
MyFile = .FoundFiles(I) 'имя файла

Всем большое спасибо, но может еще варианты есть?

  Ответить  
 
 автор: час   (16.07.2008 в 12:28)   личное сообщение
 
 


xlaProd.Quit 'вот то, что закроет. иначе прооблеммммммммм

  Ответить  
 
 автор: willy-nilly   (18.07.2008 в 12:03)   личное сообщение
 
 

Нет, я другое имела в виду.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList