您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页在VB中通过API访问Excel数据库的实现

在VB中通过API访问Excel数据库的实现

来源:抵帆知识网
龙源期刊网 http://www.qikan.com.cn

在VB中通过API访问Excel数据库的实现

作者:迟津愉 王红军 来源:《硅谷》2008年第24期

[摘要]Visual Basice是一个功能强大的程序设计软件,有多种访问数据库的功能,而API是操作系统自带的一套功能强大的函数集,在VB开发中使用API可以大大提高编程的功能,提高效率。通过实例来体会在VB程序设计时如何调用API函数来访问Excel数据库。 [关键词]Visual Basice API函数 访问 Excel数据库

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220052-01

Visual Basice是一套可视化的、面向对象的、事件驱动方式的结构化程序设计语言,已经成为许多程序设计者甚至专业程序员用来开发Windows应用程序的首选开发工具。但用过Visual Basice的设计人员都知道,要想用Visual Basice输出复杂的表格,是十分困难的,Visual Basice 中有些类型的数据是不能直接访问的,例如Excel数据和FoxPro数据。而在实际的程序设计过程中可能需要访问这些类型的数据,能不能用Visual Basice访问Excel呢?可以通过Excel对象访问Excel数据。

Visual Basice访问Excel数据我们就通过例子来具体了解一下。

首先,我们建立一个Excel模板cc.xls,然后打开VB编程环境,在“引用”项目中选取[Microsoft Excel 11.0 Object Library]项(本机运行环境是Visual Basice6.0,Excel2003),建立一个Form1窗体,并添加一个按钮Command1。具体代码如下: '在标准模块中声明 Option Explicit

Public xlapp As Object ' Excel对象 Public xlbook As Object'Excel工作簿 Public xlsheet As Object'Excel工作表

龙源期刊网 http://www.qikan.com.cn

Public Declare Function SendMessage Lib \"user32\" Alias \"SendMessageA\" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 'SendMessage API函数,为调用一个窗口的窗口函数,将一条消息发给那个窗口

Public Declare Function FindWindow Lib \"user32\" Alias \"FindWindowA\" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'FindWindow API函数,为寻找窗口列表中第一个符合指定条件的顶级窗口 '在窗体模块中建立过程 Sub getexcel()

Dim myxl As Object'用于存放Excel引用的变量 Dim excelwasnotrunning As Boolean '用于最后释放的标记 On Error Resume Next

Set myxl = GetObject(, \"Excel.Application\") If Err.Number 0 Then excelwasnotrunning = True Err.Clear '如发生错误,清楚Err对象

'检测Excel,如果Excel在运行,则将其加入运行对象表 Detectexcel

myxl.Application.Visible = True'设置Application属性,显示Excel

myxl.Parent.Windows(1).Visible = True '使用myxl对象引用的Windows集合,显示包'含该文件的实际窗口

If excelwasnotrunning = True Then

Myxl.Application.Quit '如启动时Excel副本不在运行中,则关闭它 End If

Set myxl = Nothing '释放对该应用程序和数据表的引用 End Sub

龙源期刊网 http://www.qikan.com.cn

Sub detectexcel()'检测并登记正在运行的Excel Const WM_USER = 1024 Dim hwnd As Long

hwnd = FindWindow(\"xlmain\如果Excel在运行,则API调用将返回其句柄 If hwnd = 0 Then'0 表示没有Excel在运行 Exit Sub Else

'Excel在运行,使用SendMessage API函数将其放入运行对象表 SendMessage hwnd, WM_USER + 18, 0, 0 End If End Sub

在Form1窗体Command1按钮的单击事件中输入如下代码: Private Sub Command1_Click() Dim intlow, intcol As Long Call getexcel

Set xlapp = GetObject(App.Path + \"\\cc.xls\")'打开已建立的cc.xls模板文件 xlapp.Parent.Windows(1).Visible = True Set xlsheet = xlapp.Application.Worksheets(1)

'举例,从第1列第3行到第10列第10行输入1-10数据 For intlow = 3 To 10 For intcol = 1 To 10

xlsheet.Cells(intlow, intcol) = intcol

龙源期刊网 http://www.qikan.com.cn

Next intcol Next intlow

With xlsheet'设置边框线为实线

.Range(.Cells(3, 1), .Cells(10, 10)).Borders.LineStyle = True End With

xlsheet.SaveAs App.Path + \"\\cc1.xls\" '文件另存为cc1.xls End Sub

我们只是通过举一个小例子来体会在Visual Basice中,通过调用API函数来实现访问Excel数据库的方法。当然,VB访问数据库的方法很多,但通常访问的是Accesse数据库,使用起来有一定的局限性,而Excel是应用最广泛的电子表格软件,它具有强大的数据计算与分析处理功能,因此,掌握一定的用VB访问Excel的方法,可以帮助我们实现很多欲想的功能,解决实际编程的许多问题。

参考文献:

[1]张炜,中文版Visual Basic6.0数据库开发应用教程[M].北京:航空工业出版社,2000. [2]John Clark Craig and Jeff Webb[美].Visual Basic6.0程序开发环境[M].北京:北京大学出版社,2000.

[3] Mark DodgeCraig Stinson.精通Microsoft Excel2002中文版[M],. 北京:清华大学出版社,2002.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务