【问题标题】:Excel cell values to access要访问的 Excel 单元格值
【发布时间】:2020-07-01 10:35:22
【问题描述】:

我是访问 VBA 的新手。

我需要将工作簿范围的 Sheet1 ("C1:C10") 中的值传输到访问文件 Table1 上的新行

来自 C1 的值必须进入第一列,第二列进入 c2,依此类推。

访问文件已经存在,因此值必须转到访问表的最后一行

此外,在 Excel 上使用 VBA 还是在 Access 上进行此类工作更可取

【问题讨论】:

  • 在完成研究之后,到目前为止您尝试过什么?请在您的问题中包含这一点。
  • 在决定是从 Access 拉取还是从 Excel 推送时,您需要考虑您的用户正在使用哪个应用程序 - Access 或 Excel。
  • 为了帮助社区给你最好的答案,请阅读how to ask指南。
  • 为什么会涉及Excel?为什么不直接在 Access 中输入数据?

标签: excel vba ms-access


【解决方案1】:

您可以使用 VBA 从 Access 执行此操作。首先设置对 Microsoft Excel 对象库的引用(从任何模块中选择工具|引用)。然后使用以下 VBA 代码,根据需要更改文件名、表名和字段名:

Sub sGetExcelData()
    On Error GoTo E_Handle
    Dim db As DAO.Database
    Dim rsData As DAO.Recordset
    Dim strSQL As String
    Dim objXL As New Excel.Application
    Dim objXLBook As Excel.Workbook
    Dim objXLSheet As Excel.Worksheet
    Dim strFile As String
    Dim lngLoop1 As Long
    strFile = "C:\test\book2.xlsx"
    Set objXLBook = objXL.Workbooks.Open(strFile)
    Set objXLSheet = objXLBook.Worksheets("Sheet1")
    Set db = DBEngine(0)(0)
    strSQL = "SELECT Field1,Field2,Field3,Field4,Field5,Field6,Field7,Field8,Field9,Field10 FROM Table1 WHERE 1=2;"
    Set rsData = db.OpenRecordset(strSQL)
    With rsData
        .AddNew
        For lngLoop1 = 1 To 10
            rsData(lngLoop1 - 1) = objXLSheet.Cells(lngLoop1, 3)
        Next lngLoop1
        .Update
    End With
sExit:
    On Error Resume Next
    rsData.Close
    Set rsData = Nothing
    Set db = Nothing
    Set objXLSheet = Nothing
    objXLBook.Close SaveChanges:=False
    Set objXLBook = Nothing
    objXL.Quit
    Set objXL = Nothing
    Exit Sub
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "sGetExcelData", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume sExit
End Sub

需要注意的几点:

  • 通过选择特别需要的10个字段,可以很容易地做一个循环;
  • 使用WHERE 1=2 是一种确保记录集中不包含任何现有记录以提高速度的方法;
  • Access 记录集中的字段索引为 0,因此第一个字段为 0,依此类推。

问候,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多