2013-06-13 2 views
0

Мне было интересно, можно ли перенести данные с листа excel и сохранить его в базе данных Microsoft Access. У меня много листов данных с аналогичным форматом, и я бы хотел, чтобы для каждого из них была доступна таблица. Я также хотел бы получить данные из базы данных, но я думаю, что я должен научиться хранить данные в первую очередь. Я нашел этот код, я не знаю, может ли кто-нибудь объяснить, как он работает (или, если он не похож на то, что я ищу)? Я прочитал силовое программирование в excel с vba, поэтому я знаю базовую vba, но не это содержимое базы данных (возможно, больше).Код Excel-VBA, который перемещает листы Excel в Microsoft доступ?

Public Sub DoTrans() 



    Set cn = CreateObject("ADODB.Connection") 
    dbPath = Application.ActiveWorkbook.Path & "\FDData.mdb" 
    dbWb = Application.ActiveWorkbook.FullName 
    dbWs = Application.ActiveSheet.Name 
    scn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath 
    dsh = "[" & Application.ActiveSheet.Name & "$]" 
    cn.Open scn 

    ssql = "INSERT INTO fdFolio ([fdName], [fdOne], [fdTwo]) " 
    ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh 


    cn.Execute ssql 


End Sub 

Также, если у вас есть рекомендации по книге, которые охватывали бы это/ссылки, это также было бы оценено.

ответ

0

Код, который вы нашли, передает данные в уже существующую базу данных с именем FDData.mdb, которая, вероятно, уже настроена так, чтобы выглядеть точно так же, как ваш рабочий лист excel. Могу ли я спросить, почему вы не просто используете Access? С помощью VBA проще создавать листы Excel из Access, чем делать наоборот. Существует также база данных импорта из функции Excel Excel в Access, пытаетесь ли вы автоматизировать этот процесс для огромного количества листов Excel? В противном случае вам лучше использовать мастер. Возможно, мы сможем помочь вам, если вы сможете точно сказать, что вы пытаетесь сделать, связывание Excel и Access через VBA может быть более контрпродуктивным, чем просто выбрать один и иметь дело с минусами, если вы не готовы написать много код.

+0

Применение я сделал может иметь много листов, так что идея была, чтобы позволить пользователю создавать резервные копии данных в МА из приложения. Он сортирует и отображает данные, которые пользователь ставит в excel, (1301..13 **, см. Ссылку dp). Я согласен с вами (и большая часть интернета), используя TransferSpreadsheet, поскольку @TomCollins проще, я просто надеялся вы можете сделать тот же процесс с превосходной стороны. Вы порекомендовали бы открыть связанную предварительно подготовленную базу данных и написать там код vba, который будет принимать контент из исходного приложения? Сможете ли вы отправить данные обратно? https://www.dropbox.com/s/ia0lvww9kyms2fz/s2.JPG – user2457541

1

Я уверен, что это можно сделать в Excel, но я не знаю этого с головы.

Но это довольно легко сделать в Access (также используется VBA). Посмотрите на TransferSpreadsheet метод. Если вы объедините его с сохраненными спецификациями импорта, он может многое сделать.

У вас также есть выбор импорта данных в новую таблицу, или вы можете просто ссылаться на электронную таблицу и заставить ее действовать как таблица. Связывание полезно, когда вы не хотите всю информацию электронной таблицы и хотите ее запросить.

Вот ссылка на синтаксис команды: http://msdn.microsoft.com/en-us/library/office/ff844793(v=office.14).aspx

0

Поскольку вы знаете о доступе значение ячейки в вашем первенствует и знают, как получить доступ к AccessDB в качестве записей в VBA, это привычка быть слишком трудно для вас ..

Я уверен, что Google даст вам хорошее направление для этого!

И я нашел эту ссылку для вас .. http://www.ozgrid.com/forum/showthread.php?t=76110

+0

Я не в порядке с кодом, который вы видите выше, я нашел его по другому вопросу s.o. – user2457541

+0

@ user2457541: Я что-то нашел для вас. – matzone

Смежные вопросы