【发布时间】:2014-07-08 23:36:02
【问题描述】:
我正在尝试将输入 Excel 的数据存储和检索到 Access 中。我是一个 Access 新手,并且已经在前端有一个 Excel 程序,引导我从 Excel 驱动导入。我已经成功地弄清楚如何将我的 Excel 命名范围保存到所需的 Access 表中,但现在我需要弄清楚如何将特定数据从该 Access 表中拉回 Excel。我知道我可以简单地使用 Excel 中的“获取外部数据”功能将整个 Access 表导入 Excel,但我需要能够根据一组预定的参数仅将表的特定部分导入 Excel。这可以吗?
作为程序的背景,它基本上存储来自零件编号运行的数据。我不仅需要将新零件运行保存到 Access 数据库中(我想通了),而且我还需要能够将以前的零件编号运行从 Access 拉回 Excel 以执行进一步分析。这就是为什么我需要弄清楚如何只导入表格的特定部分。我不确定我可以发布哪些代码(如果有的话),因为我基本上是从头开始寻找代码;但是,如果您认为我的 Excel 程序中需要任何代码,我很乐意提供。谢谢你的帮助。下面是代码:
Sub GetSpecData()
Application.ScreenUpdating = False
'*******************************************************************************
'Open the connection to the data source.
Set Connection = New ADODB.Connection
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=\\Server2013\network_shared\QC SHARED\Databases\P&Q_Tracking_Data_Storage.mdb;"
'*******************************************************************************
'Create the new RecordSet.
Set Recordset = New ADODB.Recordset
With Recordset
'Define the appropriate Filter(s) and notify the user of the selection criteria.
Src = "Select * from Raw_Data where Tag = 'GHI' "
Src = Src & "or Tag = 'DEF' "
Src = Src & "or Tag = 'LMN'"
.Open Source:=Src, ActiveConnection:=Connection
'Write the field names.
For ODCol = 0 To .Fields.Count - 1
Tracking.Sheets("Selected Past Data").Range("B7").Offset(0, ODCol).Value = .Fields(ODCol).Name
Next
'Write the recordset.
Tracking.Sheets("Selected Past Data").Range("B7").Offset(1, 0).CopyFromRecordset Recordset
End With
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
'*******************************************************************************
'Create and format the table from the Recordset.
With Tracking.Sheets("Selected Past Data")
DataLastRow = .Range("A" & Rows.Count).End(xlUp).row
.ListObjects.Add(xlSrcRange, Range("B7:M" & DataLastRow), , xlYes).Name = "INC2tbl"
.ListObjects("INC2tbl").ShowTotals = True
End With
Application.ScreenUpdating = True
'*******************************************************************************
结束子
在谷歌搜索下面评论中的建议后,我有几个问题。首先,上面的代码似乎通过三个键过滤访问数据:GHI、DEF 和 LMN。我的解释正确吗?其次,它说“Select * from Raw_Data where Tag = 'GHI'”,因为那是引号,这不是将要执行的实际代码,对吗?这只是一个提示或类似的东西,对吗?
【问题讨论】:
-
谷歌搜索“excel vba adodb.connection 访问数据库”。这会对你有所帮助。
-
下面是我为这个过程创建的子。在谷歌搜索上述内容后,我仍在根据我在网上找到的代码对其进行调整。我有几个问题。
-
更新了上面的原始问题以包含代码和有关它的问题。谢谢。
标签: vba ms-access excel ms-access-2007