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