荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: Visual Basic对 Excel的存取方法
发信站: BBS 荔园晨风站 (Thu Jan 21 22:43:24 1999), 转信

MicroSoft Excel是一个功能强大而且容易使用的电子表格和数据
库,如果和VisualBai c(以下简称VB)配合使用,则可以充分发挥各自
的长处,很容易就能够编制出多姿多采的应用程序。本文就此谈一点
应用体会。
    Excel必须作为外部数据库,利用Windows提供的ODBC(开放数据库
连接)功能,这样才能被VB调用。
    首先要在Windows的ODBC项下对Excel进行设置:
    1.在"开始→设置→控制面板"中选择ODBC。

    2.在Data Source窗口中选取Excel,单击Setup。
    3.在资料来源名称(Data Source Name)项下填写Excel Files,在
版本项下选Excel 4., 在选择目录(Select Dirctory)项下选取安装E
xcel软件所在路径,单击OK。
    VB对Excel的存取方法有三种,下面分别介绍。
    一、使用DDL(Dynamic Data Link)动态连接

    1.在连接之前,要在后台先运行Excel数据库文件。例如可在Form
—load()中写如下语句
    sub Form— load()
    shell("c:\msoffice\excel\excel.exe  c:\mydb\mywb.xls",0)
    end sub

    2.在窗口中设置一个Text控件,例如Text1。

    3.编程如下:
    sub Form—Click()
    If Text1.Linkmode=0 Then
    Text1.LinkTopic="Excel|c:\mydb\[mywb.xls]mytab"
    Text1.LinkItem="r1c1"
    Text1.Mode=2
    end If
    Text1.LinkRequest
    end sub
    本例说明如下:
    第2句 Linkmode的取值是:0没有连接,1热连接,2冷连接。
    第3句mytab是mywb.xls工作书中的一个表。
    第4句是指定Text1与数据库连接的区域,可以是表中的单元,或者
是已命名的范围。
    第7句 由于第5句把Linkmode设为2,必须要有LinkRequest才能生
效。
    二、使用VB内置的数据库引擎(Jet Engine DataBase)
    在这里VB不能够识别Excel工作表的名称,必须先在工作表中对应
用数据范围进行命名在VB语句中作为RecordSet的名称。
    在Excel工作表中对应用范围进行命名的方法:先在工作表中选定
好范围,再在Insert项下选取NameDefine进行命名。编程如下:
    sub Form—load()
    Dim mydb As DataBase  ‘注一
    Dim myrec As RecordSet
    Set mydb=OpenDataBase("c:\mydir\mybook.xls",Flase,False,
"Excel4.0")
    Set myrec=mydb.openRecordSet("Books")
    Do Until myrec.EOF
    If myrec![Name]="My Sun" Then   ‘注二
    Text1.text=myrec![date]  ‘注三
    Exit Do
    end If
    myrec.MoveNext   ‘注四
    loop
    end sub
    sub text1—click()  ‘注五’
    myrec.edit
    myrec![Date]=text1.text
    myrec.update
    myrec.close
    mydb.colse
    end sub
    以上代码注释如下:
    注一:首先要为数据库及记录集建立一个变量名。如果在运行时
在此处出错,提示usere fined type not find,不能识别Database、R
ecordset等数据类型,即表示所使用的VB版本为非专业版本,没有Jet
Engine DataBase功能。
    注二:在OpenRecordset执行成功后,BOOKS的第一条记录即进入内
存成为当前记录,并赋予变量myrec。myrec![Name]是取当前记录Name
栏的值。Excel栏目名称的缺省值是表中第一行的字符。
    注三:当查找到书名为"My Sun"的记录时,就把该记录日期栏的内
容赋予文本框。
    注四:把当前记录的指针移向下一记录。
    注五:这段代码的功能是:当光标指向文本框,单点鼠标左键时,把
文本框的内容写入当前记录。其中edit和update配对使用,对当前记
录进行写入。
    三、使用工具条的Data控件对Excel进行存取操作
    使用Data控件是建立一个应用程序最容易的方法,在对外部数据
库存取时使用的代码最少,甚至不用任何代码。并且生成的应用程序
操作灵活而有效。
    使用Data控件,需要同时建立一个或多个关联控件,所谓关联控件
,是指一些用于显示或修改数据库内容的控件,例如文本框、列表框、
组合框、标记框等。
    我们首先对Data控件及关联控件的属性进行设置,可以在设计环
境中进行,亦可以使用代码语句在运行中设置。
    在设置环境中设置的方法:

    1.建立Data1控件后,进入Datal属性窗口,用鼠标左键单击Databa
seName的标有三点的小按钮,即弹出OpenFile的对话框,在此选出需要
的数据库文件,例如c:\mydir\m ybook.xls。
    2.单击Connect项的下拉箭头,在下拉菜单中选出相应的数据库类
型及版本,例如Excel5 .0。

    3.单Recordsource项的下拉箭头,在下拉菜单中选出相应的工作
表,例如Books。在选取好Excel数据库文件之后,工作书内的工作表、
栏目名称、已命名的范围已自动装入此下拉表中。

    4.建立关联控件。用于显示或修改栏目内容,在这里以建立一个
文本控件作为例子。
    5.在文本框的属性窗口中 ,单击DataSource下拉菜单,选Datal。
    6.在文本框的属性窗口中,单击DataField的下拉菜单,选Name。
设置完毕即可运行。在文本框中首先显示第一个记录中的书名,以后
每单击一次Data框的箭头在文本框中就会显示下一个记录中的书名。
    本程序在下列运行环境中通过:Windows 95,MS Office95,Excel5
..0,Visual Basic4.0
--

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店