将Excel文件数据导入Access数据库VBA

问题描述 投票:0回答:1

我对Access&VBA完全陌生。我需要将Excel文件数据导入访问表。我正在尝试使用以下代码来实现它。

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TableName", importFilePath, True

在我的输入文件中,有某种格式,我需要从第8行获取数据。

所以,我被困在这一点上。如何从第8列读取数据。我还指定了范围,但随后生成了错误。有人可以帮忙吗?

excel-vba ms-access-2010 vba excel
1个回答
0
投票

当然,一种方法是创建文件的临时副本,在Excel中打开该副本,删除前7行,保存,然后导入该副本:

Sub ExcelImportTest()
    Dim fso As Object  ' FileSystemObject
    Dim f As Object  ' File
    Dim strTempPath As String
    Dim objExcel As Object  ' Excel.Application
    Dim objWorkbook As Object  ' Excel.Workbook
    Const TemporaryFolder = 2

    Set fso = CreateObject("Scripting.FileSystemObject")  ' New FileSystemObject
    strTempPath = fso.GetSpecialFolder(TemporaryFolder) & "\" & fso.GetTempName & "\"
    fso.CreateFolder strTempPath
    Set f = fso.GetFile("C:\Users\Gord\Desktop\toImport.xls")
    fso.CopyFile f.Path, strTempPath & f.Name

    Set objExcel = CreateObject("Excel.Application")  ' New Excel.Application
    Set objWorkbook = objExcel.Workbooks.Open(strTempPath & f.Name)
    objWorkbook.ActiveSheet.Rows("1:7").EntireRow.Select
    objExcel.Selection.Delete
    objWorkbook.ActiveSheet.Range("A1").Select
    objWorkbook.Save
    Set objWorkbook = Nothing
    objExcel.Quit
    Set objExcel = Nothing

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExcelData", strTempPath & f.Name, True

    fso.DeleteFile strTempPath & f.Name
    fso.DeleteFolder Left(strTempPath, Len(strTempPath) - 1)

    Set f = Nothing
    Set fso = Nothing
End Sub

0
投票

我只是在搜索从多个Excel文件构建Access数据库的可能性时才发现这篇文章的。一些背景:具体来说,我安装了一些天气传感器,将数据另存为Excel文件。以后,我将不经常从传感器下载这些Excel文件,并希望建立一个数据库,其中包含我所有传感器的所有数据。在这些Excel文件中,我要导入到数据库中的相关信息从第29行开始(标题,然后从第29行开始:第一列-时间,第二列-温度),这就是为什么您的代码可以正常导入的原因将单个Excel文件放入我的数据库。我的目标是能够从传感器中的文件夹中转储新的Excel文件,并使用VBA将其所有数据导入Access数据库。有没有办法导入数据

  • 一次从所有Excel文件中提取
  • 到Access数据库中现有表的末尾(不覆盖以前导入的现有数据)

我对VBA还是很陌生,但是也许有人有一些想法/建议可以向我指出正确的方向?还是以前有人记录过这样的数据?

© www.soinside.com 2019 - 2024. All rights reserved.