靠谱电子书 > 经管其他电子书 > excel_vba_编程教程(完整版) >

第88部分

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

小说: excel_vba_编程教程(完整版) 字数: 每页4000字

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



    
        …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 

返回目录 上一页 回到顶部 0 0

你可能喜欢的