《2022年ADO连接excel表格 .pdf》由会员分享,可在线阅读,更多相关《2022年ADO连接excel表格 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ADO 连接 excel表格,怎样访问数据?收藏VB 是常用的应用软件开发工具之一,由于 VB 的报表功能有限,而且一但报表格式发生变化, 就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL 的强大报表功来实现报表功能。但由于VB 与 EXCEL 由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。一、 VB 读写 EXCEL 表:VB 本身提自动化功能可以读写EXCEL 表,其方法如下:1、在工程中引用Microsoft Excel类型库:从工程 菜单中选择 引用 栏;选择 Microsoft Excel 9.0 O
2、bject Library(EXCEL2000 ),然后选择 确定 。表示在工程中要引用EXCEL 类型库。2、在通用对象的声明过程中定义EXCEL 对象:Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet 3、在程序中操作EXCEL 表常用命令:Set xlApp = CreateObject(Excel.Application) 创建 EXCEL 对象Set xlBook = xlApp.Workbooks.Open(文件名 ) 打开已经存在的EXCEL 工件簿
3、文件xlApp.Visible = True 设置 EXCEL 对象可见(或不可见)Set xlSheet = xlBook.Worksheets(表名 ) 设置活动工作表xlSheet.Cells(row, col) =值 给单元格( row,col)赋值xlSheet.PrintOut 打印工作表xlBook.Close (True) 关闭工作簿xlApp.Quit 结束 EXCEL 对象Set xlApp = Nothing 释放 xlApp对象xlBook.RunAutoMacros (xlAutoOpen) 运行 EXCEL 启动宏xlBook.RunAutoMacros (xlAu
4、toClose) 运行 EXCEL 关闭宏4、在运用以上VB 命令操作 EXCEL 表时,除非设置EXCEL 对象不可见,否则VB 程序可继续执行其它操作,也能够关闭EXCEL ,同时也可对EXCEL 进行操作。但在EXCEL操作过程中关闭EXCEL 对象时, VB 程序无法知道,如果此时使用EXCEL 对象, 则 VB 程序会产生自动化错误。形成VB 程序无法完全控制EXCEL 的状况,使得VB 与 EXCEL 脱节。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4
5、页 - - - - - - - - - 二、 EXCEL 的宏功能:EXCEL 提供一个 Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口, 点击右键菜单的插入模块 ,则增加一个 模块 1 ,在此模块中可以运用Visual Basic 语言编写函数和过程并称之为宏。其中,EXCEL 有两个自动宏: 一个是启动宏 (Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理, 当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB 的自动化功能来调用E
6、XCEL 工作表时,启动宏和关闭宏不会自动运行, 而需要在 VB 中通过命令xlBook.RunAutoMacros (xlAutoOpen)和 xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。三、 VB 与 EXCEL 的相互勾通:充分利用 EXCEL 的启动宏和关闭宏,可以实现VB 与 EXCEL 的相互勾通,其方法如下:在 EXCEL 的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB 程序在执行时通过判断此标志文件存在与否来判断 EXCEL 是否打开,如果此标志文件存在,表明EXCEL
7、对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL 对象已被用户关闭,此时如果要使用EXCEL 对象运行,必须重新创建EXCEL 对象。四、举例:1、在 VB 中,建立一个FORM ,在其上放置两个命令按钮,将ommand1的 Caption 属性改为 EXCEL , Command2的 Caption属性改为 End 。 然后在其中输入如下程序:Dim xlApp As Excel.Application 定义 EXCEL 类Dim xlBook As Excel.Workbook 定义工件簿类Dim xlsheet As Excel.Worksheet 定义工作表类
8、Private Sub Command1_Click() 打开 EXCEL 过程If Dir(D:tempexcel.bz) = Then 判断 EXCEL 是否打开Set xlApp = CreateObject(Excel.Application) 创建 EXCEL 应用类xlApp.Visible = True 设置 EXCEL 可见Set xlBook = xlApp.Workbooks.Open(D:tempbb.xls) 打开 EXCEL 工作簿Set xlsheet = xlBook.Worksheets(1) 打开 EXCEL 工作表xlsheet.Activate 激活工作表
9、xlsheet.Cells(1, 1) = abc 给单元格 1 行驶列赋值xlBook.RunAutoMacros (xlAutoOpen) 运行 EXCEL 中的启动宏Else MsgBox (EXCEL已打开 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - End If End Sub Private Sub Command2_Click() If Dir(D:tempexcel.bz) Then 由 VB 关闭 EX
10、CEL xlBook.RunAutoMacros (xlAutoClose) 执行 EXCEL 关闭宏xlBook.Close (True) 关闭 EXCEL 工作簿xlApp.Quit 关闭 EXCEL End If Set xlApp = Nothing 释放 EXCEL 对象End End Sub 2、在盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为bb.xls 的 EXCEL 文件。3、在bb.xls中打开 Visual Basic编辑器, 在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:Sub auto_open() Open d:tempexcel
11、.bz For Output As #1 写标志文件Close #1 End Sub Sub auto_close() Kill d:tempexcel.bz 删除标志文件End Sub 4、运行 VB 程序,点击EXCEL 按钮可以打开EXCEL 系统,打开EXCEL 系统后, VB 程序和 EXCEL 分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在 VB 程序中重复点击EXCEL 按钮时会提示EXCEL 已打开。如果在EXCEL 中关闭 EXCEL 后再点 EXCEL 按钮,则会重新打开EXCEL 。而无论 EXCEL 打开与否,通过VB 程序均可关闭 EXCEL 。
12、这样就实现了VB 与 EXCEL 的无缝连接。ADO 打开 EXCEL 示例Dim Conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim i As Integer 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - Dim sql As String Private Sub Form_Load() On Error Resume Next strName = f
13、:book.xls EXCEL文件名strSheetName = sheet1 EXCEL表名Conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= & strName & ;Extended Properties=Excel 8.0;HDR=Yes 连接 EXCEL 文件sql = select * from & strSheetName & $ 打开 EXCEL 表rs.Open sql, Conn, 3, 3 MsgBox rs.RecordCount Do Until rs.
14、EOF For i = 0 To rs.Fields.Count - 1 List1.AddItem rs.Fields.Item(i).Name If Not IsNull(rs.Fields.Item(i).value) Then List2.AddItem rs.Fields.Item(i).value Else rs.Update rs.Fields.Item(i).value = peter & i rs.Update End If Next i rs.MoveNext Loop End Sub 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -