VBA连接数据库(vba连接网络数据库),本文通过数据整理汇集了VBA连接数据库(vba连接网络数据库)相关信息,下面一起看看。
今天讲座的内容是如何建立数据库连接,并举例说明从数据库中寻找有用记录并填入表格的方法。首先我们需要打开一个工作表,它的A列值是数据库中要查询的字段,用数据库中找到的其他内容填充这个工作表中B: G列的位置。好吧,让我们看看下面。
今天讲座的内容是如何建立数据库连接,并举例说明从数据库中寻找有用记录并填入表格的方法。
首先我们需要打开一个工作表,它的A列值是数据库中要查询的字段,用数据库中找到的其他内容填充这个工作表中B: G列的位置。好了,我们先来看下面这段代码,在代码的过程中有详细的讲解。有些比较容易,有些比较难懂,但没关系。有兴趣的读者可以仔细琢磨,一步一步来看。当我研究VBA的时候,资料很少,有些需要我自己去探索。当这个平台上的资料多了,我也希望有英雄能给我一本书,对大家的学习都有好处。
1将我的数据显示为字符串,将我的表显示为字符串
2 Dim wb作为工作簿
3将ws作为工作表变暗
4 Dim i一样长,j一样长
五
六
7 Dim cnn As ADODB。关系
8 Dim rs As ADODB。记录集
Set WB=thisworkbook \ 指定工作簿。
1setws=wb.sheets (a-RR) \ 指定工作表名称。
11昏暗路径
1 path=active workbook的路径名。path \ \ \
13 ChDir路径
1 my data= d:\ \ RR \ \ my data . MDB \ 指定新的数据库名称(完整路径)
15 myTable=RR data \ 指定数据库的数据表名称。
检查是否已经存在同名的数据库文件。
16如果Dir(myData)=",则
7msgbox (mydata 不存在!)
如果它不存在,释放变量并退出。
18设置wb=无
19设置ws=无
20套rs=无
21
22
23设置cnn=无
24结束
其他25个
如果数据库文件已经存在,请检查数据表是否存在。
\ 建立到数据库的连接。
26设置cnn=New ADODB。关系
27与cnn
28 .provider= Microsoft . jet . oledb . 4.0
29 .打开我的数据
30结尾为
\ 开始查询数据表是否存在。
31套rs=cnn。OpenSchema(adSchemaTables)
32个直到rs。文件结束
33 If LCase(rs!Table _ name)=lcase (my table)然后gotohh \ 如果找到了,就退出循环。
\ 继续查询。
34 rs。下一步
35圈
\ 释放变量,并退出(未找到)
36设置wb=无
37设置ws=无
38套rs=无
39
40
41设置cnn=无
4msgbox(此工作表不存在!)
43结束
hhh:
44结束If
在这里,我找到了一条记录,打开了数据库。
45张( A-RR )。挑选
4范围( B2: G3000 )。清除\ 准备填充数据。
47 Set rs=New ADODB。记录集
48 t=2
49 Do While Cells(t,1)
50个细胞(t,1)。挑选
51 Sql=select * from myTable _
52 其中RR= \ ws。单元格(t,1)。值 \
53 rs。打开Sql,cnn,adOpenKeyset,adLockOptimistic
54如果rs。那么RecordCount=0
\ 如果数据库中的工作表行中没有数据,就
55 ws。单元格(t,2)。值=找不到
56 ws。细胞(t,3)。值=找不到
其他57个
\ 如果数据库中有一行工作表数据,则更新该数据。
58 ws。单元格(t,2)。价值=卢比。字段(1)
59 ws。细胞(t,3)。价值=卢比。字段(2)
60结束If
1 RS。关闭,这里的RS必须关闭,这是必要的。
62吨=1吨
63回路
6msgbox“完成!”,vbInformation vbOKOnly
\ 关闭数据库并查询数据集。
65 cnn。关闭
\ 发布变量
66设定wb=无
67设置ws=无
68集rs=无
69设置myCmd=Nothing
70 Set myCat=Nothing
71设置cnn=无
看看下面的截图:
到目前为止,这项任务已经完成。用VBA控制EXCEL是这个平台的高级内容,但是程序的思想、思路、编写功能是一致的,都要按照规定的路线进行。如果你检测到你没有按照自己的想法运行程序,那是绝对不可能的。关注这个平台,经常会有类似的大段代码供你参考。当然,上面的代码也是解决这类问题的通用代码。读者可以用,没问题。
分享成果,享受正能量。
更多VBA连接数据库(vba连接网络数据库)相关信息请关注本站,本文仅仅做为展示!