友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第106章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



 □ 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。Application。10”)  
      或者  
      Set objAccess = GetObject(“C:Program Files _  
      & “Microsoft OfficeOfficeSamplesNorthwind。mdb”) 使用GenObject函数返回引 
 用到应用软件对象,以使用Access的当前实例,或者开启Access并打开一个文件(更多信息 
 参见技 巧15…2)  
 Dim objAccess As New Access。Application 上面的语句使用关键字New,声明了一个 
 对象变量,返回引用到应用软件对象,并且将该引用赋予对象变量,一步完成。 你也可 
 以使用两步法来声明一个对象变量,这样,对该对象的控制会更多些:  
 Dim objAccess As Access。Application  
 Set objAccess = New Access。Application  
 □ 当使用关键字New声明对象变量时,Access应用软件并不会打开,直到你开始在VBA代码里 
 真正使用该对象变量。  
 □ 当使用关键字New声明应用软件对象变量时,Access的一个新实例就会自动创建,你不需要 
 使用CreateObject函数  
 □ 使用关键字New创建应用软件对象的新实例比使用CreateObject函数要快 因为电脑上 
 可能安装了多个版本的Access,所以需要在函数GetObject或者CreateObject里包括该版本 
 号。下面列出最后四个 Access版本:  
 Microsoft Access 2003 Access。Application。11 (译者加)  
 Microsoft Access 2002 Access。Application。10  
 Microsoft Access 2000 Access。Application。9  
 Microsoft Access 97 Access。Application。8  

                                         293 

… 页面 310…

Microsoft Access 95 Access。Application。7 一旦使用第三步列出的方法之一创建了应用软 
件类的新实例,你就可以通过OpenCurrentDatabase或者NewCurrentDatabase方 法的帮助来打 
开一个数据库或者创建一个新数据库。你可以使用CloseCurrentDatabase方法关闭你在程序里 
打开的Access数据 库。  
技巧15…2 GetObject函数的参数  
GetObject函数的第一个参数 – Pathname – 是可选的。 当你想要使用某个特定文件里的对象 
是要用到它。第二个参数 – Class –  
是必需的,它明确哪个应用软件创建该对象,以及该对象的类型。当第一个参数为可选的而第二 
个为必需的时,你就必须在第一  
个参数位置放置一个逗号,如下所示:  
  
  
  
Dim objAccess As Object  
Set objAccess = GetObject(; Access。Application。10”)  
因为GetObject函数的第一个参数(Pathname)被忽略了,所以,就返回对Access应用软件类的 
现存的实例的引用。  
Dim objAccess As Object  
Set objAccess = GetObject(“C:Program Files & “Microsoft  
OfficeOfficeSamplesNorthwind。mdb”)  
如果GetObject函数的第一个参数是个数据库文件的名称,那么就会使用该具体数据库,激活或 
者创建Access应用软件类的新实例。  
  
既然你知道了如何创建代表应用软件的对象变量,那么我们就来看看一个从Excel VBA过程里直 
接打开Access数据库的程序示例 吧。下页显示的过程AccessViaAutomation将打开一个Access 
文件Northwind数据库。该过程将使用Access自动控制服务器的当 前实例,如果它可用的话。 
如果Access没有运行,运行时间错误将发生,并且该对象变量将被设置为Nothing。你可以通 
过在程 序里放置On Error Resume Next 语句捕捉该错误。因此,如果Access没有运行,新的 
Access实例就会被打开。本例子使用关键 字New来启动Access的新实例。正如前面所述,除了 
使用关键字创建新对象实例之外,你也可以使用CreateObject()函数来启动  
  
自动控制服务器的新实例,如下所示:  
Set objAccess = GetObject(; “Access。Application。10”)  
If objAccess Is Nothing Then  
      Set objAccess = CreateObject(“Access。Application。10”)  
End If 当你使用自动控制启动Access时,你将在任务栏上看到Access图标。Access应用软件 
对象的Visible属性被设置为False。想要 恢复该应用软件窗口的话,就得将其Visible属性 
设置为Trie。 在使用时,对象要消耗内存和系统资源。要释放这些资源的话,那么你每次使 
用完它的时候总应该关闭该对象。 下面示范的程序例子首先使用CloseCurrentDatabase方法 
关闭Northwind数据库。接着,使用Quit方法关闭Access应用程序对象。 在关闭对象后,你也应 
该将对象变量设置为关键字Nothing以释放该变量使用的内存资源。 你可以将对象变量声明为 
模块级,而不是过程级变量,以避免Access实例被关闭。 在这样的环境下,对数据库的链接 
就会保持,直到你关闭该自动控制的控制源(Excel)或者在VBA代码里使用Quit方法关闭它。  
Sub AccessViaAutomation()  
  Dim objAccess As Access。Application  
  Dim strPath As String  
  On Error Resume Next  
  Set objAccess = GetObject(; 〃Access。Application。9〃)  
   If objAccess Is Nothing Then  
     ' Get a reference to the Access Application object  
     Set objAccess = New Access。Application  
  End If  
   strPath = 〃C:Program FilesMicrosoft Office” _  
       & 〃OfficeSamplesnorthwind。mdb〃  
  ' Open the Northwind database  
  With objAccess  
     。OpenCurrentDatabase strPath  
     If MsgBox(〃Do you want to make the Access 〃 & vbCrLf _  
       & 〃Application visible?〃; vbYesNo; _  
       〃Display Access〃) = vbYes Then  

                                        294 

… 页面 311…

           。Visible = True  
           MsgBox 〃Notice the Access Application icon 〃 _  
               & 〃now appears on the Windows taskbar。〃  
      End If  
      ' Close the database and quit Access  
      。CloseCurrentDatabase  
      。Quit  
   End With  
   Set objAccess = Nothing  
 End Sub  
 使用F8键逐语句运行上面的过程。  
 技巧15…3 打开被保护了的Access数据库  
 如果该Access数据库用密码保护了,那么会提示用户输入正确的密码。你必须使用Data Access  
 Objects (DAO)或者ActiveX Data  
 Access (ADO)来编程打开密码保护的Access数据库。下面的例子使用了Access对象的DBEngine 
 属性来确定该数据库的密码。  
 要让该过程工作的话,你就必须创建对Microsoft DAO 3。6对象库的引用,如本章开头所述。  
 Sub OpenSecuredDB()  
       Static objAccess As Access。Application  
       Dim db As DAO。Database  
       Dim strDb As String  
       strDb = 〃C:Program FilesMicrosoft Office” & 〃OfficeSamples _  
       Northwind。mdb〃  
       Set objAccess = New Access。Application  
       Set db = objAccess。DBEngine。OpenDatabase(Name:=strDb; Options: False; _  
        ReadOnly:=False; Connect:=〃;PWD=test〃)  
         
       With objAccess  
           。Visible = True  
           。OpenCurrentDatabase strDb  
       End With  
       db。Close  
       Set db = Nothing  
 End Sub  

5。使用 DAO 链接到 Access 数据库  

 要使用数据访问对象(DAO)连接到Access数据库的话,你就必须首先在引用对话框里创建对 
 Microsoft Data Access Objects 3。6  
 Library的引用。下面示范的程序例子DAOOpenJetDatabase,使用DBEngine对象的OpenDatabase 
 方法来打开Northwind数据库, 并且通知用户该数据库已被打开。
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!