使用 Excel 工作表充填数组

如果在 Excel 的工作表中存贮了数据,则可以使用 GetObject 方法来获得对包含了工作表的工作簿的引用,然后使用该引用来检索其中的值。获得引用的第一步只需要提供通向workbook的路径,如下所示:

' 将这段代码放在Declarations部分中 Option Explicit
' 如果使用的是 Office 97,要确保
' 设置一个对 Microsoft Excel 8.0 对象库的引用。
' 如果使用的是 Office 95,则要设置
' 一个对 Microsoft Excel 5.0 对象库的引用,同时应该将 
' 变量声明为WorkSheetDim wkbObj As WorkBook ' 声明一个对象变量。

Private Sub Form_Load()
   ' 然后用 GetObject 方法设置对象。
   Set wkbObj = GetObject _
      ("C:\My Documents\MySpread.xls")
End Sub

注意 为了使用 Excel 对象,必须设置对 Excel 对象库的引用。为此,可以单击 “工程”菜单,然后单击“首选”。找到 Excel 对象库并双击它。最后单击“确定”。同样地,应该注意如果和 Excel 5.0对象库一起使用 GetObject,那么必须将变量声明为WorkSheet;如果使用的是 Excel 8.0 对象库,应该将变量声明为 WorkBook 。

在设置了对 Excel 对象库的引用后,就可以在 Excel 对象模型中使用这个引用,用工作表中的数据充填数组。为此可以结合Value 属性来使用 Range 方法,以便获得电子数据表中任何一个单元的数据。

Dim arrPrices (1 to 7)
Dim i As Integer
For i = 1 to 7
   ' 使用工作表中 B 列的七个 
   ' 值来填充数组。.
   arrPrices(i) = wkbObj.Worksheets(1) _
   .Range("B" & i + 1).Value
Next i

如果不熟悉 Excel 电子数据表,下面这些图形将显示数据的来源。

典型的 Excel 电子数据表

电子数据表的布局,以及所使用的对其中单元的引用方法,都很容易和 MSChart 控件中对数据点的引用方法对应起来。例如,电子数据表中的一“列”(如同前面例子中提到的 B 列)对应于 MSChart 中的一“列”。如果创建的是多系列的图表,则每一列对应一个系列。同样,电子数据表中的一“行”对应于 MSChart 中一“列”里的一“行”。因此,可以将图表想象成电子数据表来设计。

例如,正如一开始可以通过增加数组维数创建多系列的图表,现在可以使用工作表中的一列或多列来填充数组。换句话说,要创建多系列的图表,可以用数字填写电子数据表的两列(或更多列),然后使用这些列来填充数组,就象下面的代码所做的这样:

Dim arrData (1 to 7, 1 to 2)
Dim i As Integer
For i = 1 to 7
   ' A 列的值填充了数组的
   ' 第一个系列。如果这些值是字符串 
   ' 那么将成为行的标签。 
   arrData(i, 1) = wkbObj.Worksheets(1) _
   .Range("A" & i + 1).Value

   ' B 列的值填充第二个系列。
   arrData(i, 2) = wkbObj.Worksheets(1) _
   .Range("B" & i + 1).Value
Next i

提示 可以使用 CurrentRegion 属性返回 Excel 列中的行数。然后可以利用这个数指定数组第一维的上界。

前面的代码,与上图中的电子数据表结合起来使用,将生成一个每行以一周中相应一天为标签的图表。