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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Что не так?
 
 автор: Rein   (08.05.2010 в 18:40)   личное сообщение
 
 

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 выдает сообщение "Сохранять файл. Да/Нет". Насколько я понял все проблемы отсюда. Что сделать можно?

  Ответить  
 
 автор: snipe   (09.05.2010 в 02:44)   личное сообщение
 
 

Вот чаво написано в книге "Мicrosoft Access 2003" В.Михеевой И.Харитоновой
Часть II глава 15
Закрытие объектов Workbook и Application
Объект Мicrosoft Worksheet закрыть нельзя. Для закрытия объекта Excel Workbook может быть использован метод Close, а для выхода из приложения - метод Quit.
.......
.......
Если программно были внесены изменения в рабочем листе, то при закрытии объекта Workbook будет выдан вопрос о необходимости сохранения изменений. Если вы не хотите, что бы пользователь получил такой вопрос, введите аргумент False для метода Close

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