powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Импорт нескольких файлов excel в access
14 сообщений из 14, страница 1 из 1
Импорт нескольких файлов excel в access
    #35602948
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть куча файлов excel, во всех них - одинаковая по структуре таблица с данными. Есть БД с уже созданной аналогичной таблицей, пустой. Как теперь можно все эти excel'евские файлы импортировать в access, автоматически? Вручную долго.
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #35603225
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из акса можно записать в таблицу, скажем такой процедурой (в предположении, что целевая таблица, в примере называется fromexcel, уже создана и что все файлы находятся в одной папке)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub getdirfiles()
    Dim d, pth, strs, path
    path = "c:\temp\"
    pth = path & "*.xls"
    d = Dir(pth)
    Do While d <> ""
        strs = "Insert into fromexcel select * from [Лист1$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]"
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Импорт нескольких файлов excel в access
    #37893814
tgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tgm
Гость
mds_worldИз акса можно записать в таблицу, скажем такой процедурой (в предположении, что целевая таблица, в примере называется fromexcel, уже создана и что все файлы находятся в одной папке)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub getdirfiles()
    Dim d, pth, strs, path
    path = "c:\temp\"
    pth = path & "*.xls"
    d = Dir(pth)
    Do While d <> ""
        strs = "Insert into fromexcel select * from [Лист1$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]"
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub



Добрый день.Подскажите пожалуйста, как в макросе заменить конкретное имя листа, на его порядковый номер в книге,если нужный лист в разных книгах имеет разные имена, но везде это 1-й лист?
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #37894546
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tgm,

если речь о первом листе, то вместо [Лист1$] в запросе напишите, например, [A1:IV65535] as Z и автоматически попадете на первый лист.
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #37894547
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, диапазон не обязательно такой всеохватный. Достаточно нужного вам.
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #37894574
tgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tgm
Гость
mds_world,спасибо Вам большое! Будем пробовать.
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #38334482
А как реализовать просто импорт всех файлов excel (таблицы) из определенной папки в таблицы с названием файлов?
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #38334552
Вежливый_ОператорБДА как реализовать просто импорт всех файлов excel (таблицы) из определенной папки в таблицы с названием файлов?
Тебе нужно циклом перебрать файлы в эксель и на каждом проходе делать импорт файла в таблицу с таким же названием.
Например, так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub testprogon()
Dim strFileName
Dim fso, fld, f1, fc, s
Dim strFullFileName As String
Set fso = CreateObject("Scripting.FileSystemObject")
folderspec = "d:\docs\И так далее\"
Set fld = fso.GetFolder(folderspec)
Set fc = fld.Files
For Each f1 In fc
    s = f1.Name
    strFullFileName = folderspec & s
    'При каждом проходе создается таблица s, и далее она заполняется данными из
    'именованного диапазона "Data0", при отсутсвии такого диапазона возникает ошибка - и капец работе
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, s, strFullFileName, -1, "Data0"
    MsgBox "Import Done " & strFullFileName
Next
End Sub


-----
Не люблю Progress OpenEdge
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Импорт нескольких файлов excel в access
    #39593620
kirikys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый вечер. Подскажите пожалуйста, я в VBA не очень силен, где я накосячил:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub getdirfiles()
    Dim d, pth, strs, path
    path = "C:\Users\samsonov.k\Desktop\&#206;&#242;&#247;&#229;&#242;&#251; &#228;&#235;&#255; &#232;&#236;&#239;&#238;&#240;&#242;&#224;\"
    pth = path & "*.xlsm"
    d = Dir(pth)
    Do While d <> ""
        strs = "UPDATE [dbo].[Dannue]"
       SET [Clinika] = (select Clinika from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[Opl] = (select Opl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]
      ,[Kred] = (select Kred from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[ProsKred] = (select ProsKred from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[Vurychka] =(select Vurychka from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])
      ,[Nachisl] = (select Nachisl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])
      ,[Prixod] = (select Prixod from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])
      ,[Vydacha] = (select Vydacha from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[Rasxod] = (select Rasxod from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[Ost_Skl] = (select Ost_Skl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      ,[Ost_Kab] = (select Ost_Kab from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )
      WHERE dbo_Dannue.Mes_Year = [Сводный$].Mes_Year"
        
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub

Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #39593646
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub getdirfiles()
    Dim d, pth, strs, path
    path = "C:\Users\samsonov.k\Desktop\&#206;&#242;&#247;&#229;&#242;&#251; &#228;&#235;&#255; &#232;&#236;&#239;&#238;&#240;&#242;&#224;\"
    pth = path & "*.xlsm"
    d = Dir(pth)
    Do While d <> ""
        strs = "UPDATE [dbo].[Dannue]"+ _
      " SET [Clinika] = (select Clinika from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[Opl] = (select Opl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]"+ _
      ",[Kred] = (select Kred from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[ProsKred] = (select ProsKred from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[Vurychka] =(select Vurychka from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])"+ _
      ",[Nachisl] = (select Nachisl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])"+ _
      ",[Prixod] = (select Prixod from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])"+ _
      ",[Vydacha] = (select Vydacha from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[Rasxod] = (select Rasxod from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[Ost_Skl] = (select Ost_Skl from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      ",[Ost_Kab] = (select Ost_Kab from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )"+ _
      " WHERE dbo_Dannue.Mes_Year = [Сводный$].Mes_Year"
        
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub


синтаксис поправил, логику не смотрел
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #39594625
kirikys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub getdirfiles()
    Dim d, pth, strs, path
    path = "C:\Users\samsonov.k\Desktop\Отчеты для импорта\"
    pth = path & "*.xlsm"
    d = Dir(pth)
    Do While d <> ""
        strs = "UPDATE [dbo].[Dannue]" + _
      " SET [Clinika] = (select [Clinika] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[Opl] = (select [Opl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" + _
      ",[Kred] = (select [Kred] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[ProsKred] = (select [ProsKred] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[Vurychka] =(select [Vurychka] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])" + _
      ",[Nachisl] = (select [Nachisl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])" + _
      ",[Prixod] = (select [Prixod] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2])" + _
      ",[Vydacha] = (select [Vydacha] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[Rasxod] = (select [Rasxod] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[Ost_Skl] = (select [Ost_Skl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      ",[Ost_Kab] = (select [Ost_Kab] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] )" + _
      "WHERE dbo_Dannue.Mes_Year = [Сводный$].[Mes_Year]"
        
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub



Помогите пожалуйста разобраться. Никак не могу понять где ошибка.
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #39594687
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
количество скобок не соответствует, что и написано в ошибке
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #39598025
kirikys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub getdirfiles()
    Dim d, pth, strs, path
    Dim SQL$
    path = "C:\Users\samsonov.k\Desktop\rep_upload\"
    pth = path & "*.xlsm"
    d = Dir(pth)
    Do While d <> ""
        strs = "UPDATE [dbo_Dannue] " & _
      " SET [Clinika] = (select [Clinika] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] " & _
      "),[Opl] = (select [Opl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Kred] = (select [Kred] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] " & _
      "),[ProsKred] = (select [ProsKred] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2] " & _
      "),[Vurychka] =(select [Vurychka] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Nachisl] = (select [Nachisl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Prixod] = (select [Prixod] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Vydacha] = (select [Vydacha] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Rasxod] = (select [Rasxod] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Ost_Skl] = (select [Ost_Skl] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      "),[Ost_Kab] = (select [Ost_Kab] from [Сводный$] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]" & _
      ") WHERE dbo_Dannue.Mes_Year = [Сводный$].[Mes_Year] ;"
        
        Debug.Print strs
        Stop
        
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub



А теперь вот так.... уже второй день сижу...
...
Рейтинг: 0 / 0
Импорт нескольких файлов excel в access
    #39598042
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит неверное название поля где-то. Можно убирать строки понемногу и найти, какое именно.

А вообще, вместо того, чтобы писать тыщу раз "select x from [Сводный$] IN..." (что порождает такое же количество запросов к файлу), можно использовать JOIN в UPDATE
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Импорт нескольких файлов excel в access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]