|
|
|
| Не понимаю, все книжки перечитала - и не работает
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 | |
|
| |
|
|
|
| Раз Вы написали:
Dim WS As Worksheet
то должны были объявить и библиотеку excel в референсах. или может забыли? | |
|
| |
|
|
|
| в начале кода объявим
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 | |
|
| |
|
|
|
| Большое спасибо. Все равно не работает. Excel сидит в памяти по-прежнему и не стопится. | |
|
| |
|
|
|
| Зачем вы вообще создаете Application и открываете Workbook?
Для выполнения DoCmd.TransferSpreadsheet это не нужно. | |
|
| |
|
|
|
| Спасибо, но там еще идет обработка снятия зпщиты с листа, в зависимости от того, что в нем написано | |
|
| |
|
|
|
| Простите, где там?......... | |
|
| |
|
|
|
| 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. | |
|
| |
|
|
|
| И добавила, и переставила - ничего.
А помогло - вот что:
в еконец цикла вставила Quit:
.................
XL.Quit
Next I
End If
End With
Set XL = Nothing
Теперь работает, правда, не очень понятно, как
Я просто сидела и на каждой строке отладки смотрела, сколько памяти забирает Excel.
Увеличиваться память стала после строки
MyFile = .FoundFiles(I) 'имя файла
Всем большое спасибо, но может еще варианты есть? | |
|
| |
|
|
|
|
xlaProd.Quit 'вот то, что закроет. иначе прооблеммммммммм
|
| |
|
| |
|
|
|
| Нет, я другое имела в виду. | |
|
| |