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

excel_vba_编程教程(完整版)-第66部分

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



          。Axes(xlCategory)。HasTitle = True  
          。Axes(xlCategory)。AxisTitle。Characters。Text = 〃〃  
          。Axes(xlSeries)。HasTitle = False  
          。Axes(xlValue)。HasTitle = True  
          。Axes(xlValue)。AxisTitle。Characters。Text = mySheet。Range(〃B1〃) _  
               & 〃()〃  
          。Axes(xlValue)。AxisTitle。Orientation = xlUpward  
     End With  
     db。Close  
End Sub  
过程ChartData的运行结果显示在图15…18上。  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

                                          312 

… 页面 329…

   
   
   
 图15…18 你可以使用VBA编程基于从Access表,查询或者SQL语句获取的数据创建内嵌图表   

24。传输 Excel 电子表格到 Access 数据库  

  世界上许多大的数据库都是从电子表格开始的。当你需要从你的电子表格创建一个数据库应 
 用软件时,你可以求助于缓慢呆滞的 手动方法来传输数据,你也可以使用你新学的VBA编程技巧 
 自动将你的电子表格变为数据库表。一旦在数据库格式了,你的Excel 数据就可以使用在高级的 
 公司范围的报告上使用,或者作为一个独立的应用软件使用(不必多言,后面的要求就是你要拥 
 有数据 库应用软件的设计技巧)。本章剩余的部分将示范如何将Excel电子表格链接和导入到 
 Access数据库。在你移到Excel数据到 Access之前,你应该尽可能地整理好数据,这样,传输 
 操作就会顺利。请牢记,电子表格里你要传输的每一行都会变为表中的 一个记录,而每一列 
 都会作为表的字段。因为这个原因,你计划传输到Access的电子表格的第一行应该包含字段名 
 称。你要传 输的数据列中间应该没有空白。换句话说,你的数据应该是连续的。如果你要传输 
 的数据有大量的列,那么应该先打印出你的数据并检查确保以后没有意外。如果你的数据的第 
 一列为字段名称,那么建议你使用内置的Transpose函数先将数据转置,以确保 数据是从上到 
 下,而不是从左到右。让你数据顺利导入的关键是使你的电子表格尽可能象数据库表。  

25。将 Excel 电子表格链接到 Access 数据库  

  你可以使用TransferSpreadsheet方法将Excel电子表格链接到Access数据库(参见本章“使 
 用TransferSpreadsheet方法获取数 据”部分有关该方法的使用详情)。下面的示例过程将图 
 15…19显示的电子表格链接到Northwind数据库。在使用 OpenCurrentDatabase方法打开Access 
 数据库之后,该过程从Chap15。xls电子表格文件的mySheet工作表中位于单元格(A1:D7) 区域 
 里,使用Access DoCmd对象的TransferSpreadsheet方法创建了一个名为ExcelSheet的链接表。 
 注意,DoCmd语句中的参 数…1表明电子表格的第一行包含列标题。接着,该过程打开该链接的 
 表为编辑模式,因此用户可以添加或者修改数据。如果在添 加一条或者多条记录后,你要更 
 改回到Excel,那么你将注意到在链接的Access表里作的改变将在Excel里立即可用。  

                                                                 
   
 图15…19 VBA过程LinkExcel_ToAccess将电子表格链接到Access的Northwind数据库  
 Sub LinkExcel_ToAccess()  
   Dim objAccess As Access。Application  
   Dim strName As String  
    strName = 〃Linked_ExcelSheet〃  
   Set objAccess = New Access。Application  
   With objAccess  
      。OpenCurrentDatabase 〃C:Program FilesMicrosoft Office” _  
        & 〃OfficeSamplesNorthwind。mdb〃  
        。DoCmd。TransferSpreadsheet acLink; acSpreadsheetTypeExcel9; _  
        strName; _  
        〃C:Chap15。xls〃; _  
    
        …1; 〃mySheet!A1:D7〃  
      。DoCmd。OpenTable strName; acViewNormal; acEdit  
   End With  
 End Sub  

                                         313 

… 页面 330…

                                                                                  
 图15…20 Excel电子表格可以被链接到Access数据库  

26。将 Excel 电子表格导入 Access 数据库  

  在前面的部分,你学习了如何将Excel电子表格链接到Access数据库。导入你的电子表格也 
 是一样简单。你甚至可以使用用于链 接的相同的VBA过程,作一些细微的改变:简单地将常 
 数acLink改为acImport,就完工了。下述过程将图15…19里显示的电子表 格(见前面部分) 
 导入到Northwind数据库。  
 Sub ImportExcel_ToAccess()  
   Dim objAccess As Access。Application  
   Dim strName As String  
    strName = 〃Imported_ExcelSheet〃  
   Set objAccess = New Access。Application  
   With objAccess  
      。OpenCurrentDatabase 〃C:Program FilesMicrosoft Office” _  
        & 〃OfficeSamplesNorthwind。mdb〃  
      。DoCmd。TransferSpreadsheet acImport; acSpreadsheetTypeExcel9; _  
        strName; _  
        〃C:Chap15。xls〃; _  
       …1; 〃mySheet!A1:D7〃  
      。DoCmd。OpenTable strName; acViewNormal; acEdit  
   End With  
 End Sub  

27。放置 Excel 数据到 Access 表中  

  除了链接或者内嵌你的Excel电子表格,你万一想要从头开始创建一个Access表并且装载电子 
 表格里面的数据呢?使用一些你已 经在本书里获得的编程技巧,你可以轻松完成该任务。我们 
 来看看一个VBA过程,基于图15…19显示的Excel电子表格,动态地创 建一个Access表。注意, 
 该过程使用ADO和MicrosoftJet。OLEDB。4。0提供者链接到Access数据库。创建链接之后,该过 
 程使用 ADOX对象库里的Catalog和Table对象创建一个新Access表。接着,对应电子表格冽名称 
 的字段被添加到该表中。注意,每个文 本字段明确了它可以接受的最大字符数。如果电子表格 
 单元格的长度大于该字段大小,那么错误处理程序将显示Access内置的 信息,提示该错误并 
 终止过程。 该过程的最后一个任务是数据传输操作。要执行该任务,该过程打开了Access表的 
 Recordset对象。因为你需要添加记录到该表, 所以该过程使用了一个adOpenKeyset指针类型。 
 现在该表已打开,该过程使用For…Next循环在Excel数据行中循环,将在每个 单元格中找到 
 的信息放置到相应的表字段中。注意,使用Recordset对象的AddNew方法往Access表里添加新 
 的记录。从每行单 元格复制完数据之后,该过程使用Recordset对象的Update方法来保存该表 
 记录。  

                                          314 

… 页面 331…

Sub AccessTbl_From_ExcelData()  
     Dim conn As ADODBnnection  
     Dim cat As ADOX。Catalog  
     Dim myTbl As ADOX。Table  
     Dim rstAccess As ADODB。Recordset  
     Dim rowCount As Integer  
     Dim i As Integer  
      On Error GoTo ErrorHandler  
     ' connect to Access using ADO  
     Set conn = New ADODBnnection  
     conn。Open 〃Provider = Microsoft。Jet。OLEDB。4。0;〃 & _  
        〃Data Source = C:Program FilesMicrosoft  
        OfficeOfficeSamplesNorthwind。mdb;〃  
     ' create an empty Access table  
     Set cat = New Catalog  
     cat。ActiveConnection = conn  
     Set myTbl = New ADOX。Table  
     myTbl。Name = 〃TableFromExcel〃  
     cat。Tables。Append myTbl  
     ' add fields (columns) to the table  
     With myTbllumns  
        。Append 〃School No〃; adVarWChar; 7  
        。Append 〃Equipment Type〃; adVarWChar; 15  
        。Append 〃Serial Number〃; adVarWChar; 15  
        。Append 〃Manufacturer〃; adVarWChar; 20  
     End With  
     Set cat = Nothing  
     MsgBox 〃The table structure was created。〃  
     ' open a recordset based on the newly created  
     ' Access table  
     Set rstAccess = New ADODB。Recordset  
     With rstAccess  
        。ActiveConnection = conn  
        。CursorType = adOpenKeyset  
        。LockType = adLockOptimistic  
        。Open myTbl。Name  
     End With  
     ' now transfer data from Excel spreadsheet range  
     With Worksheets(〃mySheet〃)  
        rowCount = Range(〃A2:D7〃)。Rowsunt  
        For i = 2 To rowCount + 1  
          With rstAccess 。AddNew ' add a new record to an Access table  
           。Fields(〃School No〃) = Cells(i; 1)。Text  
           。Fields(〃Equipment Type〃) = Cells(i; 2)。Value  
           。Fields(〃Serial Number〃) = Cells(i; 3)。Value  
           。Fields(〃Manufacturer〃) = Cells(i; 4)。Value  
           。Update  ' update the table record  
          End With  
        Next i  
     End With  
     ' close the Recordset and Connection object and remove them  
     ' from memory  
     rstAccess。Close  
     conn。Close  
     Set rstAccess = Nothing  
     Set conn = Nothing  
      AccessTbl_From_ExcelDataExit:  
     Exit Sub  
     ErrorHandler:  
     MsgBox Err。Number & 〃: 〃 & Err。Description  
     Resume AccessTbl_From_ExcelDataExit  
End Sub  

                                            315 

… 页面 332…

28。接下来……  

 本章提供了多个例子将Excel数据放入Access,以及从Access获取数据到工作表。你学习了如 
 何从Excel VBA过程中 控制Access应用软件,执行一些任务,例如打开Access窗体和报告,创 
 建新窗体,运行选择和参数查询,以及调用Access内置 函数。另外,本章示范了一些创建文本 
 文件,查询表,和图表的技术。你也学习了如何使用链接,导入和动态Access表,将Excel 数据 
 放置到Access数据库里。在下章中,你将学习如何使用Excel创建,察看和分析因特网数据。  

                                          316 
返回目录 上一页 回到顶部 1 2
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!