Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2012, 16:54   #1
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
Вопрос Импортирование нескольких .xls файлов в Access

Есть несколько однотипных .xls файлов. Муторно импортировать по одному.
Есть ли возможность?:
1)Импортировать сразу несколько файлов, не изменяя их.
или
2)Импортировать сразу несколько файлов, оставив общую для всех шапку и последовательно (не важно в каком порядке) скопировав данные под шапкой в одну таблицу Access.

Спасибо.
tibhar940 вне форума Ответить с цитированием
Старый 15.08.2012, 00:23   #2
papirys
 
Регистрация: 03.05.2012
Сообщений: 7
По умолчанию

Файлы складываются в папку.
В vba перебираются все файлы из этой папки с расширением *.xls и добавляются в таблицу Access.
не бывает глупых вопросов....
papirys вне форума Ответить с цитированием
Старый 15.08.2012, 09:27   #3
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от papirys Посмотреть сообщение
Файлы складываются в папку.
В vba перебираются все файлы из этой папки с расширением *.xls и добавляются в таблицу Access.
Спасибо за абстрактную подсказку, а можно подробнее? Если можно кроссссылку или же пример кода.
Можно ли это реализовать через макрос аксесса кстати?

Вот исходя из этого, можно как то указать, чтобы макрос перебрал и импортировал все файлы типа Табличка (#) из папки? (В принципе для меня макрос это решение оказалось нормальное, и временных затрат особых нет, но если вдруг большое количество файлов навалится, то будет проблемматичнее).
tibhar940 вне форума Ответить с цитированием
Старый 15.08.2012, 12:56   #4
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Добрый день.
Можно попробовать как-то так:

Код:

Dim MyFolder As Folder, MyFile As File
Set db = CurrentDb
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFolder = fso.GetFolder("\\tsclient\C\Otchety\temp\")


For Each MyFile In MyFolder.Files

DoCmd.TransferSpreadsheet acImport, 8, "имя таблицы", MyFile, True
Next
Да если я не ошибаюсь при этом необходимо подключить библиотеку scriptingRuntime
gluk_fm вне форума Ответить с цитированием
Старый 15.08.2012, 14:05   #5
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от gluk_fm Посмотреть сообщение
Добрый день.
Можно попробовать как-то так:

Код:

Dim MyFolder As Folder, MyFile As File
Set db = CurrentDb
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFolder = fso.GetFolder("\\tsclient\C\Otchety\temp\")


For Each MyFile In MyFolder.Files

DoCmd.TransferSpreadsheet acImport, 8, "имя таблицы", MyFile, True
Next
Да если я не ошибаюсь при этом необходимо подключить библиотеку scriptingRuntime
Извините за глупый вопрос, а куда это вставлять в Аксессе? Я только в Экселе с Макросами работал.

Понял как запускать..но что-то он теперь не хочет работать корректно.

Последний раз редактировалось tibhar940; 15.08.2012 в 14:59.
tibhar940 вне форума Ответить с цитированием
Старый 15.08.2012, 16:25   #6
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Вариантов вставки множество:
- модуль
- кнопка
- события форм
- события других действий

Но если я правильно понял то Вам подойдёт модуль. Только не забудьте перед модулем написать "sub t" а после модуля "End sub"
gluk_fm вне форума Ответить с цитированием
Старый 15.08.2012, 16:57   #7
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от gluk_fm Посмотреть сообщение
Вариантов вставки множество:
- модуль
- кнопка
- события форм
- события других действий

Но если я правильно понял то Вам подойдёт модуль. Только не забудьте перед модулем написать "sub t" а после модуля "End sub"
Да это я понял уже. пробую. Но дебаггер ругается.
tibhar940 вне форума Ответить с цитированием
Старый 15.08.2012, 18:19   #8
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

На чём ругается?
Если в начале то вспомните моё примечание
Код:
Да если я не ошибаюсь при этом необходимо подключить библиотеку scriptingRuntime
gluk_fm вне форума Ответить с цитированием
Старый 15.08.2012, 23:39   #9
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

А ещё добавить одно объявление:

Dim fso As Object
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 16.08.2012, 09:06   #10
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от gluk_fm Посмотреть сообщение
На чём ругается?
Если в начале то вспомните моё примечание
Код:
Да если я не ошибаюсь при этом необходимо подключить библиотеку scriptingRuntime
Так, ну я разобрался как подключить библиотеку, подключил. Запускаю макрос, первый раз он работает, потом дебагер выделяет строку.


Однако он импортирует только один файл из папки, а не все XLSы.

Я немного полуркал и видоизменил код. Теперь он импортирует сразу несколько файлов. Но также нестабильно и дебаггер ругается.

Что я делаю не так?

И да, кстати.
If UCase(Right(MyFile, 3)) = "XLS" Then
Что значит тройка в этой строке?

Очередная правка - попробовал на больших XLSах, их вообще не подхыватывает, просто вылетает таже ошибка дебаггера и подсвечивается строка.

Последний раз редактировалось tibhar940; 16.08.2012 в 09:52.
tibhar940 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление XLS файла из Access artemavd Общие вопросы Delphi 0 27.09.2011 18:45
Автоматическое копирование из Access в XLS _Yan_ Microsoft Office Access 1 21.12.2010 16:34
Линкование двух xls файлов the_moon Microsoft Office Excel 3 15.03.2010 01:07
Как из нескольких файлов *.xls выбрать нужные данные суммировать их и скопировать в уже готовую форму Иван123456 Microsoft Office Excel 2 07.08.2009 21:50
Поиск *.csv и *.xls файлов Len@ Microsoft Office Excel 18 28.07.2008 22:31