Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Импорт нескольких файлов excel в access  [new]
Qwe.Qwe1
Member

Откуда:
Сообщений: 237
Есть куча файлов excel, во всех них - одинаковая по структуре таблица с данными. Есть БД с уже созданной аналогичной таблицей, пустой. Как теперь можно все эти excel'евские файлы импортировать в access, автоматически? Вручную долго.
19 окт 08, 16:11    [6326514]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27515
Из акса можно записать в таблицу, скажем такой процедурой (в предположении, что целевая таблица, в примере называется fromexcel, уже создана и что все файлы находятся в одной папке)
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
19 окт 08, 23:21    [6327135]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Импорт нескольких файлов excel в access  [new]
tgm
Guest
mds_world
Из акса можно записать в таблицу, скажем такой процедурой (в предположении, что целевая таблица, в примере называется fromexcel, уже создана и что все файлы находятся в одной папке)
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 [b][Лист1$][/b] IN '" & path & d & "'[Excel 8.0;HDR=YES;IMEX=2]"
        CurrentDb.Execute strs
        d = Dir
    Loop
End Sub


Добрый день.Подскажите пожалуйста, как в макросе заменить конкретное имя листа, на его порядковый номер в книге,если нужный лист в разных книгах имеет разные имена, но везде это 1-й лист?
26 июл 12, 14:09    [12919642]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27515
tgm,

если речь о первом листе, то вместо [Лист1$] в запросе напишите, например, [A1:IV65535] as Z и автоматически попадете на первый лист.
26 июл 12, 23:17    [12922303]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27515
Собственно, диапазон не обязательно такой всеохватный. Достаточно нужного вам.
26 июл 12, 23:19    [12922306]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
tgm
Guest
mds_world,спасибо Вам большое! Будем пробовать.
26 июл 12, 23:45    [12922388]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
Вежливый_ОператорБД
Guest
А как реализовать просто импорт всех файлов excel (таблицы) из определенной папки в таблицы с названием файлов?
17 июл 13, 17:08    [14579462]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
грязный комплектовщик
Member

Откуда: екб
Сообщений: 130
Вежливый_ОператорБД
А как реализовать просто импорт всех файлов excel (таблицы) из определенной папки в таблицы с названием файлов?

Тебе нужно циклом перебрать файлы в эксель и на каждом проходе делать импорт файла в таблицу с таким же названием.
Например, так:
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
17 июл 13, 17:51    [14579716]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Импорт нескольких файлов excel в access  [new]
kirikys
Member

Откуда:
Сообщений: 7
Всем добрый вечер. Подскажите пожалуйста, я в VBA не очень силен, где я накосячил:
+
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
30 янв 18, 22:38    [21152696]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20532
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

синтаксис поправил, логику не смотрел
31 янв 18, 00:22    [21152874]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
kirikys
Member

Откуда:
Сообщений: 7
Shocker.Pro,
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


Помогите пожалуйста разобраться. Никак не могу понять где ошибка.

К сообщению приложен файл. Размер - 40Kb
1 фев 18, 09:43    [21156538]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20532
количество скобок не соответствует, что и написано в ошибке
1 фев 18, 10:28    [21156701]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
kirikys
Member

Откуда:
Сообщений: 7
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


А теперь вот так.... уже второй день сижу...

К сообщению приложен файл. Размер - 18Kb
7 фев 18, 11:28    [21172479]     Ответить | Цитировать Сообщить модератору
 Re: Импорт нескольких файлов excel в access  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20532
Значит неверное название поля где-то. Можно убирать строки понемногу и найти, какое именно.

А вообще, вместо того, чтобы писать тыщу раз "select x from [Сводный$] IN..." (что порождает такое же количество запросов к файлу), можно использовать JOIN в UPDATE
7 фев 18, 11:41    [21172525]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить