|
|
|
|
Sub ImportFromExcel()
Dim objExl As Object, i As Integer
Dim d, pth, Path
Dim rst As Recordset, rst2 As Recordset
Set rst = CurrentDb.OpenRecordset("stoimost2")
Set rst2 = CurrentDb.OpenRecordset("qMaxDate")
Path = "C:\Fonds\vtb\"
pth = Path & "*.xls"
d = Dir(pth)
Do While d <> ""
Set objExl = GetObject(Path & d)
objExl.Parent.Windows(1).Visible = True
i = 1
'MsgBox objExl.Name
Do While objExl.Application.Cells(3 + i, 2) <> rst2!MaxDate
rst.AddNew
rst!Код = CInt(Left(objExl.Name, 2))
rst!Дата = objExl.Application.Cells(3 + i, 2)
rst!Сумма1 = objExl.Application.Cells(3 + i, 3)
rst!Сумма2 = objExl.Application.Cells(3 + i, 4)
rst.Update
'MsgBox objExl.Application.Cells(3 + i, 3)
i = i + 1
Loop
d = Dir
'objExl.Application.Quit
Set objExl = Nothing
Loop
End Sub
|
подробнее:
импортируются только те записи из десятка excel файлов, которых нет в таблице stoimost2. Запрос qMaxDate выбирает последнию дату, потом сравнивается с датой в excel файле, если нет такой даты то идет добавление в таблицу stoimost2.
проблема:
GetObject(Path & d) все работает прекрасно, перебирает каждый xls файл в каталоге. Выборка и добавление нужных записей по "Дата" также работает прекрасно. Выбирает именно те записи которые нужны. НО происходит следующее:
-начало обработки 1-го xls в каталоге. Правильно.
-выборка записей по дате. Правильно
-добавление записей из 1-го xls. Правильно.
-конец обработки 1-го xls файла в каталоге. Правильно.
-начало обработки 2-го xls в каталоге. Правильно.
-выборка записей по дате. Правильно
-добавление записей из 1-го xls. Неправильно
-конец обработки 2-го xls файла в каталоге. Правильно.
я добавлял строчку objExl.Application.Quit, с ней ВСЁ становится правильно. Но выдает ошибку потому что при закрытии xls файла, Excel выдает сообщение "Сохранять файл. Да/Нет". Насколько я понял все проблемы отсюда. Что сделать можно? | |
|
| |
|
|
|
| Вот чаво написано в книге "Мicrosoft Access 2003" В.Михеевой И.Харитоновой
Часть II глава 15
Закрытие объектов Workbook и Application
Объект Мicrosoft Worksheet закрыть нельзя. Для закрытия объекта Excel Workbook может быть использован метод Close, а для выхода из приложения - метод Quit.
.......
.......
Если программно были внесены изменения в рабочем листе, то при закрытии объекта Workbook будет выдан вопрос о необходимости сохранения изменений. Если вы не хотите, что бы пользователь получил такой вопрос, введите аргумент False для метода Close | |
|
| |