Access数据库是一个关系数据库管理系统,可以有效地以有组织的方式保存大量数据。 Excel是将数据分解为有意义的信息的强大工具。但是,Excel不能存储太多数据。但是,当我们同时使用Excel和Access时,这些工具的功能将成倍增加。因此,让我们学习如何通过VBA将Access数据库作为数据源连接到Excel。

image

将Access数据库连接为数据源Excel

1:向AcitveX数据对象添加引用

我们将使用ADO连接来访问数据库。因此,首先我们需要添加对ADO对象的引用。

将模块添加到您的VBA项目,然后单击工具。在这里单击参考。

image

现在查找Microsoft ActiveX数据对象库。检查您拥有的最新版本。我有6.1。单击确定按钮,然后完成。现在,我们准备创建指向Access数据库的链接。

2.编写VBA代码以稳定与Access数据库的连接

要将Excel连接到Access数据库,您需要具有一个Access数据库。我的数据库名称是“ Test Database.accdb”。它保存在“ C:\ Users \ Manish Singh \ Desktop”位置。这两个变量很重要。您将需要根据需要进行更改。其余代码可以保持原样。

复制以下代码以制作Excel VBA模块并根据需要进行更改。我已经解释了以下代码的每一行:

Sub ADO_Connection()

'Creating objects of Connection and Recordset

Dim conn As New Connection, rec As New Recordset

Dim DBPATH, PRVD, connString, query As String

'Declaring fully qualified name of database. Change it with your database's location and name.

DBPATH = "C:\Users\ExcelTip\Desktop\Test Database.accdb"

'This is the connection provider. Remember this for your interview.

PRVD = "Microsoft.ace.OLEDB.12.0;"

'This is the connection string that you will require when opening the the connection.

connString = "Provider=" & PRVD & "Data Source=" & DBPATH

'opening the connection

conn.Open connString

'the query I want to run on the database.

query = "SELECT * from customerT;"

'running the query on the open connection. It will get all the data in the rec object.

rec.Open query, conn

'clearing the content of the cells

Cells.ClearContents

'getting data from the recordset if any and printing it in column A of excel sheet.

If (rec.RecordCount <> 0) Then

Do While Not rec.EOF

Range("A" & Cells(Rows.Count, 1).End(xlUp).Row).Offset(1, 0).Value2 = _

rec.Fields(1).Value

rec.MoveNext

Loop

End If

'closing the connections

rec.Close

conn.Close

End Sub

复制上面的代码或下载下面的文件,然后对文件进行更改以满足您的要求。

`link:/wp-content-uploads-2020-02-VBA-Database-Learning.xls [__下载文件:VBA数据库学习]

当您运行此VBA代码时,Excel将建立与数据库的连接。之后,它将运行设计的查询。它将清除工作表上的所有旧内容,并使用数据库的字段1(第二个字段)的值填充A列。

此VBA Access数据库连接如何工作?

Dim conn As New Connection, rec As New Recordset

在上一行中,我们不仅声明了Connection和recordset变量,还直接使用New关键字对其进行了初始化。

DBPATH = "C:\Users\ExcelTip\Desktop\Test Database.accdb"

PRVD = "Microsoft.ace.OLEDB.12.0;"

这两行是参赛者。 DBPATH仅随您的数据库更改。 PRVD正在连接OLE DB提供程序。

conn.Open connString

该行打开与数据库的连接。打开是具有多个参数的连接对象的功能。第一个也是必要的参数是ConnectingString。此字符串包含OLE DB提供程序(此处为PRVD)和数据源(此处为DBPATH)。它还可以将admin和password作为受保护数据库的可选参数。

Connection.Open的语法为:

connection.open ([ConnectionString as String], [UserID as String], [Password as String], [Options as Long=-1])

由于我的数据库上没有任何ID和密码,因此我仅使用ConnectionString。 ConnectionString的格式为“ Provider = provider_您要使用; _ Data Source =数据库的完全限定名称”。我们制作并保存了该字符串inconnString变量。

query = "SELECT * from customerT;"

这是我要在数据库上运行的查询。您可以查询任何查询。

rec.Open query, conn

该语句在定义的连接中运行定义的查询。在这里,我们使用记录集对象的Open方法。所有输出都保存在记录集objectrec中。您可以检索操作或从记录集对象中删除值。

Cells.ClearContents

此行清除工作表的内容。换句话说,从工作表的单元格中删除所有内容。

If (rec.RecordCount <> 0) Then

Do While Not rec.EOF

Range("A" & Cells(Rows.Count, 1).End(xlUp).Row).Offset(1, 0).Value2 = _

rec.Fields(1).Value

rec.MoveNext

Loop

End If

上面的几行检查记录集是否为空。如果记录集不为空(表示查询返回了一些记录),则循环开始并开始在// cells-ranges-rows-and-columns-in-中打印字段1(此情况下为第二个字段,名字)的每个值。 vba / 3-最佳找到最后一个非空白行和列使用vba.html [列中最后一个未使用的单元格]`。

(仅用于说明。您可能没有这些行。如果您只想打开与数据库的连接,则这些行上方的VBA代码就足够了。)

我们使用rec.EOF来运行循环,直到记录集结束。 rec.MoveNext用于逐步升级到下一个记录集。 rec.Fields(1)用于从字段1获取值(由于字段索引从0开始,因此它是第二个。在我的数据库中,第二个字段是客户的名字)。

rec.Close

conn.Close

最后,当我们希望从rec和conn进行的所有工作完成后,我们将其关闭。

如果您想单独打开和关闭特定的连接,则可以在单独的子例程中包含这些行。

好的,这就是您如何使用ADO建立与ACCESS数据库的连接的方式。也有其他方法,但这是通过VBA连接到访问数据源的最简单方法。我已经尽我所能详细解释了。让我知道这在下面的评论部分是否有帮助。

相关文章:

使用一个封闭的工作簿作为数据库(DAO)在Microsoft Excel中使用VBA要将封闭的工作簿用作具有DAO连接的数据库,请在Excel中使用此VBA代码段。

使用一个封闭的工作簿作为数据库(ADO)在Microsoft Excel中使用VBA要将封闭的工作簿用作具有ADO连接的数据库,请在Excel中使用此VBA代码段。

`link:/ applications-word-outlook-in-vba-getting-started-excel-vba-userforms [Excel VBA UserForms入门] | *要将数据插入数据库,我们使用表单。 Excel用户窗体对于从用户获取信息很有用。这是从VBA用户表单开始的方法。

===

更改多个用户窗体控件的值/内容在Excel中使用VBA] || *要更改用户窗体控件的内容,请使用此简单的VBA代码段。

当用户单击在Microsoft Excel中使用vba的x按钮时,`link:/ user-forms-input-boxes在vba中防止关闭的用户窗体[通过在Excel中使用VBA防止用户单击x按钮时关闭用户窗体。为了防止用户单击表单的x按钮时关闭用户窗体,我们使用UserForm_QueryClose事件。

热门文章:

`link:/ keyboard-formula-shortcuts-50-excel-shortcuts可提高您的生产率[50 Excel快捷方式以提高生产率]更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]|这是excel中最常用和最受欢迎的功能之一,用于从不同范围和工作表中查找值。

link:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]|使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

link:/ excel-formula-and-function-excel-sumif-function [如何在Excel中使用SUMIF函数]|这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。