2016-07-20 14 views
0

У меня есть ADB, который я ищу для автоматического цикла через проводник Windows, импортирования файла в еженедельную таблицу отчетов (Wkly_Rprt), выполнения форматирования и добавления его к еженедельному (Wkly_S_Rprt), а затем удалить каждый файл из проводника Windows? Имена файлов находятся в том же формате, что и дата, измененная в конце. Если да, то как бы это выглядело, поскольку я просмотрел множество других примеров без большой удачи.Автоматический импорт файлов csv из проводника Windows в Access DB

Большое вам спасибо за помощь!

+0

Может быть, эта тема поможет вам по пути: http://stackoverflow.com/questions/20245053/running-microsoft-access-as-a-scheduled-task – Rene

+0

Забудьте прокрутить папку, просто перейдите через 'TblImportMenu'. Как заполняется эта таблица? Какой из этих файлов в таблице вам нужно импортировать? Сейчас он занимает только первое место. – Parfait

+0

Что касается файлов, то в любое время, когда файл добавляется в папку проводника Windows, этот файл необходимо импортировать. Будь то 2 или 50 файлов одновременно. Я посмотрю, как работает TblImportMenu. Где бы я добавил это, до DoCmd или после? –

ответ

0

Используйте Scripting.FileSystemObject для перебора файлов и файлов файловой системы. Вот пример кода, который я использую для импорта файлов из определенной папки:

Private sub ImportCSVs(TempImportFolder as String) 

    On Error Goto ImportCSVs_Err 
    Dim objFS As Object, objFolder As Object, objFiles As Object 

    Set objFS = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFS.GetFolder((TempImportFolder)) 
    Set objFiles = objFolder.Files 
    For Each file In objFiles 
     DoCmd.TransferText acImportDelim, "[import_spec]", "Wkly_Rprt", TempImportFolder & "\" & file.Name, False 
     'Remove old data .... 
     'Append new data .... 
     'Delete file: 
     objFs.DeleteFile TempImportFolder & "\" & file.Name 
NextFile: 
    Next 
ImportCSVs_Exit: 
    Exit Sub 
ImportCSVs_Err: 
    'Handle Errors occurred do to file structure, and Resume NextFile 

End Sub 

Вы можете сканировать папку для вложенных папок, и запустить этот код на каждую подпапку тоже, sample code at this reference

+0

Wow marlan, это отлично выглядит! От взгляда этого я бы заменил почти все мои меньшие фрагменты «Удалить» и «Добавить», где у вас есть эти комментарии. Правильно ли я в этом предположении? –

+0

Да, я так и делаю. Если файл не в правильном формате, то есть: не csv или csv, если в другом формате, произойдет ошибка. Просто вернитесь к следующему файлу ... ** Обратите внимание: ** * удалить старые данные * следует сопоставить с данными, которые вы импортируете, убедитесь, что вы не удаляете данные, только что импортированные в предыдущей итерации ...;) – marlan

+0

Привет, marlan, Я посмотрел немного кода и как он работал в моей ситуации. Удалил его, но ему не понравилась процедура «Текущее событие» в виде кнопки - объявление процедуры не соответствует описанию события. Я считаю, что это связано с OnOpen, потому что ожидается, что имя события будет запущено, когда произойдет событие. Какие-либо предложения? И, вероятно, этот немой вопрос для этого, подскажет ли вам открыть папку, или я должен разместить здесь источник папки, например, в «TempImportFolder»? Большое спасибо, –