Access Excel关联导入导出

  • 格式:doc
  • 大小:29.00 KB
  • 文档页数:2

Access Excel关联导入导出,从Excel工作薄应用值
从Access中应用Excel
这部分中前两个示例列出了Excel(安装ISAM可以加入应用程序的某些功能,第3个示例显示了简单但很有用的应用自动控制的方法,程序并非直接处理自动控制服务器的对象模型中详细的组件;而是在自动控制服务器中启动一个程序,相应地,第2个程序按Access 应用程序确定的时间和方式更新电子表格文件。

11.2.1 从Excel工作薄应用值
本节的3个示例都应用图11-2中的Excel工作薄,其中文件是MyGas.xls。

表1的前4列包含手工输入的数据,接下来的4列包含基于前4列的表达式。

公式栏显示了用于MPG(英里/加仑)列中项目的表达式,数据驻留在名为气体的区域内,“Define Name”对话框显示了表1中的区域的大小。

首个示例从Excel读取项目,在Access中执行一些计算并将结果打印到立即窗口中。

在建立Excel数据源的连接后,应用程序可以像处理内部Access表一样程序化地处理数据源。

例如,可以在表中枚举记录或基于记录源中的项目计算值。

示例将Excel工作薄中现有项目以及在Excel中所计算的表达式结果打印到立即窗口中,这顺便证实了Access计算可以产生与Excel中相同的结果;此功能减少了应用程序必须从计算密集的电子表格中读取数据的数量。

图11-2 Excel电子表格,含给定名称的区域、气体以及由A1到H45的所有组件。

Sub OpenXLComputePrint()
Dim cnn1 As New ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim computedMPG As Double
Dim computedTotal As Currency
’连接Excel数据源
cnn1.Open “Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source=C:\PMA Samples\Chapter 11\Mygas.xls;” & _
“Extended Properties=Excel 8.0;"
’打开基于Excel 数据源的只读记录集。

’默认调用为只读。

Set rst1 = New ADODB.Recordset
rst1.Open “gas", cnn1, , , adCmdT able
’枚举记录和字段值
Do Until rst1.EOF
computedMPG = rst1.Fields(“Miles”) / _
rst1.Fields(“Gallons”)
computedTotal = rst1.Fields(“Gallons”) * _
rst1.Fields(“Price per Gallon”)
Debug.Print rst1.Fields(“Date”), _
rst1.Fields(“Miles”), _
rst1.Field s(“Gallons”), _
rst1.Fields(“Price per Gallon”), _
rst1.Fields(“MPG”), computedMPG, _
rst1.Fields(“days since last refill”), _
rst1.Fields(“Total”), computedTotal
rst1.MoveNext
Loop
’清空对象
rst1.Close
Set rst1 = Nothing
cnn1.Close
Set cnn1 = Nothing
End Sub
子程序声明和创建新的Connection对象并打开它,在应用多数ISAM驱动器时这是非常关键的,因为这就是管理Access外部的数据源链接的方法。

连接字符串将对象指向名为MyGas.xls的Excel文件(图11-2显示了工作薄文件中数据的一部分)。

必须用“扩展属性”声明(它指向应用程序使用的ISAM驱动器)结束连接字符串。

示例应用了一个应用程序(Excel 8.0),它应用Excel 2002、Excel 2000和Excel 97工作薄文件。

以下的Recordset引用是ISAM应用程序的另一个重要而且比较标准的组件。

通过在连接上定义记录集,应用程序可以从远程数据源读取以及为其写入数据的能力,更新数据的能力决定于通过ISAM驱动器可获取的功能。

如果Access应用程序链接Excel数据源,可以应用Recordset对象的AddNew和Update方法为Access中的工作薄加入新行,记录集标准也必须指定链接工作薄的部分,如果引用气体区域,记录集可以应用工作薄的内置区域。

引用外部Excel表,所用语法与引用内部Access表的用语法相同。

注意:
如果应用程序必须写入或从Access中修改Excel数据源,一定要定义支持此功能的游标(例如,为游标类型传递adOpenKeyset常量,为锁定类型传递adLockOptimistic常量)。

和Data Access Objects(DAO)不同,默认ADO游标不支持更新操作。

程序下一个主要部份是Do循环,它枚举了汽车加气的所有记录。

循环中前两行为两个计算值评估表达式;在证实可以处理Excel数据源数据读取的能力时,ComputedMPG和computedTotal变量将Access和Excel计算相比较;Do循环中下面的9行将Excel表格的字段值与每行两个计算变量打印到立即窗口。

可以完全像浏览内部表格一样浏览Excel表,当然,必须在循环内调用MoveNext方法来调试电子表格行数据。

图11-3显示了上一示例输出结果的最右边的5列,头两列显示Excel中的MPG(首列)结果和Access中的MPG结果(第2列)相同,对于每次加满气时的总气费也是如此。

这证实了Access中的double和currency数据类型可以从Excel中复制结果。

图11-3 OpenXLComputePrint程序输出结果中的一部分,Access和Excel中的计算结果相同。