【问题标题】:Uploading monthly data into Access from Excel将每月数据从 Excel 上传到 Access
【发布时间】:2013-08-17 12:56:01
【问题描述】:

我有一个 Access 数据库,它需要从 Excel 电子表格中获取每月更新。 电子表格具有与数据库表不匹配的有意义的列标题。 另外,我需要检查数据是要合并还是追加。 所以我想从电子表格中获取一个数据集,我可以循环并让我的代码决定如何处理数据。 我可以在 Access 中创建一个与电子表格结构完全匹配的临时表,使用 DoCmd.TransferSpreadsheet acImport 填充它,执行我的操作,然后将其删除。

这是最简单的方法,还是我可以这样做:

strQuery = "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" _
   & Chr(34) & fromFile & Chr(34) & "].[sheet1]"

Set rs = CurrentDb.OpenRecordset(strQuery)

此代码产生错误:无法更新。数据库或对象是只读的

【问题讨论】:

    标签: excel ms-access vba recordset


    【解决方案1】:

    我认为最好在 access 中创建新表 然后首先将所有excel数据复制到该表 那么一切都会更好更快地工作

    宜兰

    【讨论】:

      【解决方案2】:

      我认为您需要使用 ADO,而不是 DOA 记录集。 ADO 要求您添加一个引用(除非您使用后期绑定)。 ADO 的某些属性和方法与 DAO 不同,比如 ADO 中没有 .Edit 方法。

      Const adOpenStatic = 3
      Const adLockOptimistic = 3
      Const adCmdText = &H0001
      
      Set objConnection = CreateObject("ADODB.Connection")
      Set objRecordSet = CreateObject("ADODB.Recordset")
      
      objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=C:\Scripts\Test.xls;" & _
              "Extended Properties=""Excel 8.0;HDR=Yes;"";" 
      
      objRecordset.Open "Select * FROM [Sheet1$]", _
          objConnection, adOpenStatic, adLockOptimistic, adCmdText
      
      Do Until objRecordset.EOF
          Wscript.Echo objRecordset.Fields.Item("Name"), _
              objRecordset.Fields.Item("Number")
          objRecordset.MoveNext
      Loop
      

      这是从 MS 的 technet 站点获取的,您可以在其中获取更多详细信息: http://technet.microsoft.com/en-us/library/ee692882.aspx

      【讨论】:

        猜你喜欢
        • 2016-10-13
        • 2013-04-25
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-13
        相关资源
        最近更新 更多