《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第92节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!

                                           288 

… 页面 305…

 BeforeRefresh                  该事件发生在查询表被刷新数据之前  
                                Private Sub qryTbl_BeforeRefresh(Cancel As Boolean)  
                                  Response = MsgBox(〃Are you sure you 〃 _  
                                    & 〃 want to refresh now?〃; vbYesNoCancel)  
                                  If Response = vbNo Then Cancel = True  
                                End Sub  
 AfterRefresh                   该事件发生在查询完成或者被取消。如果查询成功完成则参 
 数Success  
                                为True。  
                                Private Sub qryTbl_AfterRefresh(ByVal Success As  
                                Boolean)  
                                  If Success Then  
                                      MsgBox 〃The data has been refreshed。〃  
                                  Else  
                                  MsgBox 〃The query failed。〃  
                                 End If  
                                End Sub  

10。接下来……   

     在本章中,你获得了便利的事件经验和Excel的事件编程,这是无价的技术,不管你是否 
 计划给他人创建电子表格应用软件,还 是简单地将你的日常任务自动化。Excel提供了许多你 
 可以响应的事件。通过编写事件过程,你可以更改对象对事件的响应方式。 你的事件过程可以 
 简单为一条语句,仅仅显示一自定义信息;也可以复杂到包括一些判断语句和其它允许你改变你 
 的程序流的编 程结构。当某个事件发生时,VB将会直接运行适当的事件过程,而不是按标准 
 的内置方式进行响应。 你已经学习了一些编写在标准模块里的事件过程(工作簿,工作表, 
 图表工作表),然而,其它的(内嵌图表,应用软件,查询 表)则需要你在类模块里面使用 
 WithEvents关键字创建一个新对象。你也学习了你可以使用EnableEvents属性激活或者禁止事  
 件。  
 在下章,你将学习如何使用Excel VB环境下的VBA过程来使用Access数据库。  

                            第十五章 在 Excel里使用 Access  

     在第九章里面,你已经学习了从Excel里通过自动控制(用于允许一个应用程序控制另外 
 一个应用程序的对象)来操纵Word和 Outlook。本章将给演示如何编程从Excel里使用Access, 
 使用下述方法获取Access数据到电子表格里面:Automation,DAO (Data Access Objects)以及 
 ADO (ActiveX Data Objects)。在你学习如何使用Excel VBA在Access数据库里执行各种任务 
 以及获取和存 储数据于Access数据库之前,我们来粗略地介绍一下,Microsoft Access用来 
 编程对其对象访问的数据访问方法。  

1。对象库  

  Access数据库包含各种类型的对象,储存在不同的对象库里面,用来使用VBA语言显示、存 
 储或者管理数据。在本章,你将涉 猎下面列出的几个库里的对象、属性和方法。     
 Access 10。0对象库提供了用来显示数据和在Access 2002应用软件上使用的对象。该库储存子 
 在MSACC10。OLB文件里,并且  
 可以自阿C:Program FilesMicrosoft OfficeOffice文件夹里面找到。在引用对话框上设置 
 了对该库的引用之后(将在下节涉及), 你将能够在对象浏览器里面访问该库的对象、属性和 
 方法(参见图15…1)。  

                                         289 

… 页面 306…

                                                                                    
图15…1 Access库 (译者:截图为Office 2003。Access库文件为MSACC。OLB)  
Access DAO 3。6对象库提供了数据访问对象(DAO),让你决定你的数据库的结构和使用VBA操作数据。 
该库储存在DAO360。DLL  
文件里,并且可以在C:Program Filesmon FilesMicrosoft SharedDAO文件夹里找到。 
在引用对话框上设置了对该库的引 用之后(将在下节涉及),你将能够在对象浏览器里面访 
问该库的对象、属性和方法(参见图15…2)。  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
                                                                                    
  
图15…2 DAO库  
Microsoft ActiveX Data Objects 2。5 (ADO) 提供了控件数据对象(ADO)并且允许你使用OLE DB 
供应者访问和操作数据。ADO  
使得在Access数据库里对数据源创建链接,读取,插入,修改和删除数据成为可能。该库储存 
于MSADO15。DLL里面,并可以  
在C:Program Filesmon Filessystemado文件夹里找到。在引用对话框上设置了对该库 
的引用之后,你将能够在对象浏览 器里面访问该库的对象、属性和方法(参见图15…3)。  

                                          290 

… 页面 307…

                                                                                
图15…3 ADODB库  
Microsoft ADO Ext。 2。5 for DDL(动态数据链接) and Security(安全) (ADOX) 储存让你 
定义数据库结构和安全的对象。例如, 你可以定义表格,索引和关系,以及创建和修改用户 
和用户组帐户。  
  
该库储存在MSADOX。DLL里并且可以在C:Program Filesmon FilesSystemado文件夹里找 
到。在引用对话框上设置了对 该库的引用之后,你将能够在对象浏览器里面访问该库的对象、 
属性和方法(参见图15…4)。  

                                                                                
图15…4 ADOX库  
Microsoft Jet and Replication Objects 2。6 库(JRO)包含用于对象库复制的对象。该库储存 
在MSJRO。DLL里并在C:Program  
Filesmon FilesSystemado文件夹里可以找到。在引用对话框上设置了对该库的引用之 
后,你将能够在对象浏览器里面访 问该库的对象、属性和方法(参见图15…5)。  

                                        291 

… 页面 308…

                                                                                  
 图15…5 JRO库  
   
 VBA对象库提供了很多VBA对象,函数和方法供你访问文件系统,操作日期和时间函数,进行数学 
 和财务计算,与用户互动,转  
 换数据和读取文本文件。该库储存在VBE6。DLL文件里,位于C:Program Filesmon  
 FilesMicrosoft SharedVBAVBA6文件 夹里。当你安装Microsoft Excel 2002时,就会自动 
 设置对该库的引用。该库在Office 2002所有的应用软件中共享(参见图15…6)。  

                                                                                  
 图15…6 VBA库  

2。建立对对象库的引用  

 要操作Access 2002里的对象的话,首先就得创建对Microsoft Access 10。0对象库的引用。  
 1。  在VB编辑器窗口,选择工具|引用以打开引用对话框。该对话框列出了你电脑上所有可用的 
 类型库  
 2。  在清单上找到Microsoft Access 10。0 Object Library,并勾选上它  
 3。  关闭引用对话框 一旦创建了对Access类型库的引用,你就可以使用对象浏览器来查看该 
 应用软件的对象,属性和方法了 (参见前面的图15…1)。 使用引用对话框创建对其它将在本章 
 练习中访问对象库的引用。你可以在前面部分里找到库清单。你可以忽略对Microsoft Jet and  
 Replication Objects 2。6 Library (JRO)的引用,因为这里不会用到它。 如果你对数据库 
 复制有兴趣的话,那么可以找到很多有关Access编程的书涉及该主题,包括本人的书Learn  
 Microsoft Access  

                                         292 

… 页面 309…

 2000 Programming by Example (Wordware Publishing (ISBN 1…55622…770…1))。  
 技巧15…1 创建对Access对象库引用的好处  
 当你设置对Access对象库的引用时,你将获得下述好处:  
 …  你可以在对象浏览器里面查看Access的对象,属性和方法  
 …  你可以在VBA过程里直接运行Access函数  
 …  你可以声明该应用软件类型的对象变量,而不必声明普通的Object类型。声明变量为Dim  
 objAccess As Access。Application  
      (早期捆绑)要比将其声明为Dim objAccess As Object (后期捆绑)要快。  
 …  你可以在你的VBA代码里使用Access内置常量  
 …  你的VBA过程将运行得更快一些  

3。链接到 Access  

  本章中的示例使用了多种链接到Access的方法,本节将详细讨论每种链接方法。你可以使用 
 下述三种方法之一来建立对Access 的链接:  
 □     Automation  
 □ Data Access Objects (DAO)  
 □ ActiveX Data Objects (ADO)  
 要访问数据库里的数据的话,你就得打开它。如何打开某个具体的数据库,很大程度上取决于 
 你使用了哪种数据库的链接方法。  

4。使用 Automation 链接到 Access 数据库  

 当你通过Automation从Excel(或者其它应用软件)里使用Access时,你需要采取下述步骤:  
 1。  设置对Microsoft Access 10。0 Object Library的引用(参见本章前面的“建立对对象库 
 的引用”)  
 2。  声明一个对象变量,代表Access应用软件对象  
     Dim objAccess As Access。Application  
     在该声明中,objAccess为变量名称,而Access。Application用提供该对象的VB对象库的名 
     称来限定该变量。  
 3。  返回引用到应用软件对象上,并且将该引用到该对象变量。使用CreateObject函数, 
     GetObject函数或者关键字New来返回 应用软件对象的引用。使用Set语句将应用赋值到对 
     象变量。  
      Dim objAccess As Object  
      Set objAccess = CreateObject(“Access。Application。10”) 当对象还没有实例时,可 
      以使用CreateObject函数返回一个引用到应用软件对象。如果Access已经运行了的话, 
      那么新的 实例就已创建了并且确定的对象也已创建了。  
      Dim objAccess As Object  
      Set objAccess = GetObject(; “Access。Appl
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架