Как перенести электронную таблицу Excel в базу данных доступа - PullRequest
0 голосов
/ 29 ноября 2018

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

Код на данный момент:

Sub transferdata()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

connStr = "C:\Users\sachu\Desktop\Assignment 5\CalorieDatabase.mdb"
providerStr = "Microsoft.ACE.OLEDB.12.0"

    With cn
        .ConnectionString = connStr
        .Provider = providerStr
        .Open
    End With

rs.Open sqlStr, cn
rs.Close
cn.Close
End Sub

Пока мой код только устанавливает соединение между доступом и Excel

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Есть много способов сделать это.Давайте рассмотрим несколько примеров.

 Export data from Excel to Access (ADO)

Если вы хотите экспортировать данные в таблицу Access из листа Excel, пример макроса ниже показывает, как это можно сделать.

Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
    ' connect to the Access database
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source=C:\FolderName\DataBaseName.mdb;"
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable  
    ' all records in a table
    r = 3 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0 
    ' repeat until first empty cell in column A
        With rs
            .AddNew ' create a new record
            ' add values to each field in the record
            .Fields("FieldName1") = Range("A" & r).Value
            .Fields("FieldName2") = Range("B" & r).Value
            .Fields("FieldNameN") = Range("C" & r).Value
            ' add more fields if necessary...
            .Update ' stores the new record
        End With
        r = r + 1 ' next row
    Loop
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Также.,.

 Export data from Excel to Access (DAO)

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

Sub DAOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim db As Database, rs As Recordset, r As Long
    Set db = OpenDatabase("C:\FolderName\DataBaseName.mdb") 
    ' open the database
    Set rs = db.OpenRecordset("TableName", dbOpenTable) 
    ' get all records in a table
    r = 3 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0 
    ' repeat until first empty cell in column A
        With rs
            .AddNew ' create a new record
            ' add values to each field in the record
            .Fields("FieldName1") = Range("A" & r).Value
            .Fields("FieldName2") = Range("B" & r).Value
            .Fields("FieldNameN") = Range("C" & r).Value
            ' add more fields if necessary...
            .Update ' stores the new record
        End With
        r = r + 1 ' next row
    Loop
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
End Sub

Также.,,

Browse to a single EXCEL File and Import Data from that EXCEL File via TransferSpreadsheet (VBA)

Вот еще один способ.,,Sub TryThis ()

        Dim strPathFile As String
        Dim strTable As String, strBrowseMsg As String
        Dim strFilter As String, strInitialDirectory As String
        Dim blnHasFieldNames As Boolean

        ' Change this next line to True if the first row in EXCEL worksheet
        ' has field names
        blnHasFieldNames = False

        strBrowseMsg = "Select the EXCEL file:"

        ' Change C:\MyFolder\ to the path for the folder where the Browse
        ' window is to start (the initial directory). If you want to start in
        ' ACCESS' default folder, delete C:\MyFolder\ from the code line,
        ' leaving an empty string as the value being set as the initial
        ' directory
        strInitialDirectory = "C:\MyFolder\"

        strFilter = ahtAddFilterItem(strFilter, "Excel Files (*.xls)", "*.xls")

        strPathFile = ahtCommonFileOpenSave(InitialDir:=strInitialDirectory, _
              Filter:=strFilter, OpenFile:=False, _
              DialogTitle:=strBrowseMsg, _
              Flags:=ahtOFN_HIDEREADONLY)

        If strPathFile = "" Then
              MsgBox "No file was selected.", vbOK, "No Selection"
              Exit Sub
        End If

        ' Replace tablename with the real name of the table into which
        ' the data are to be imported
        strTable = "tablename"

        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
              strTable, strPathFile, blnHasFieldNames

        ' Uncomment out the next code step if you want to delete the
        ' EXCEL file after it's been imported
        ' Kill strPathFile

End Sub
0 голосов
/ 29 ноября 2018

Создайте отдельную базу данных Acces, затем свяжите в ней Excel.В Access есть инструменты для импорта данных из Excel в режиме реального времени.Выполните следующие действия:

  1. Откройте MS Access
  2. Создайте новую пустую базу данных (на этом шаге вы должны дать имя базе данных и указать место сохранения)
  3. В новой базе данных на вкладке «Внешние данные» выберите правильный тип для добавления в зависимости от того, что вы хотите импортировать (в этом случае вы должны выбрать Excel)
    • в более ранней версии MS Access популярные растягиваемые элементы были растянуты
    • в версии 2016 года, а в O365 опции более компактны, поэтому есть одна опция под названием Новый источник данных, которая содержит все возможности
  4. Процесс импорта состоит изнесколько шагов.

    1. Вы должны выбрать источник и установить, как вы хотите импортировать данные.Вы можете импортировать данные в новую таблицу в Access в виде копии или подключить источник данных к базе данных Access.Выберите подключение источника данных для оперативного общения.
    2. выберите внутренний источник данных (например, какой лист или диапазон, который вы хотите импортировать)
    3. установите, если первая строка содержит заголовки
    4. дайте имя связанной таблице

Наконец данные из Excel сошлись в Access, и они будут обновляться при использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...