如何连接Access-Excel数据输入

时间:2018-04-16 23:19:13

标签: excel ms-access

我正在考虑解决我的问题。

我有:
A - excel中的数字列表(比如说一个唯一ID),这个列表每隔几个小时就会改变

B - Access中的一个表,其中每个uniqueID都有一个额外的信息列(假设它是一个计数,称之为X)。

我的日常工作流程包括一张excel表,里面装满了带有空白X列的uniqueIDs。目前我正在将excel表导入访问,运行更新查询,然后将信息复制回excel以发送给同事。我每隔几个小时就会这样做,而且非常痛苦,我知道有一种编码方式我可以更容易地做到这一点,并且一直在试验一个VBA宏的概念,它直接从访问表中提取数据并在excel中填充我的列。

这可行吗?我不确定如何去做,甚至在谷歌搜索什么以获得更多帮助。

1 个答案:

答案 0 :(得分:0)

您可以创建Excel对象的新实例,读取所需数据,然后使用CopyFromRecordset函数将X值转储回xlsx。这是典型的代码:

Dim rs_data As DAO.Recordset
Dim xls_App As Object 'Excel.Application
Dim xls_WB As Object 'Excel.WorkBook
Dim xls_WS As Object 'Excel.Worksheet

Set xls_App = CreateObject("Excel.Application")
Set xls_WB = xls_App.Workbooks.Open("C:\temp\MyDataFile.xlsx")
Set xls_WS = xls_WB.Sheets("MyWorksheetWithData")

Set rs_data = CurrentDb.OpenRecordset(str_SourceQuery)
xls_WS.Range("A1").CopyFromRecordset rs_data
rs_data.Close
xls_WB.Save
xls_App.Quit

您也可以使用SQL直接从xlsx读取数据。以下是如何使用SQL将数据从Excel传输到现有Access表的示例:

INSERT INTO Table1 (uniqueID, SomeOtherColumn) 
SELECT *
  FROM [MyWorksheetWithData$A1:B100] 
    IN "C:\Temp\MyDataFile.xls" [Excel 12.0;HDR=YES;IMEX=0];