vb与EXCEL的连接.doc
《vb与EXCEL的连接.doc》由会员分享,可在线阅读,更多相关《vb与EXCEL的连接.doc(12页珍藏版)》请在咨信网上搜索。
1、最佳答案这份教程我曾给过很多人了,大家都说好,您也看一下吧VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。 一、 VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1、在工程中引用Microsoft Excel类型库: 从工程菜单中选择引用栏;选择Microsoft Excel 9.0 Object Li
2、brary(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工件簿文件 xlApp.Visib
3、le = 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 (xlAutoClose) 运行EXC
4、EL关闭宏 4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。 二、 EXCEL的宏功能: EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的插入模块,则增加一个模块1,在此模块中可以运用Visual Basic语言编写函数和过程并称
5、之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。 三、 VB与EXCEL的相互勾通: 充分利用EXCEL的启动宏和关闭宏,可以实
6、现VB与EXCEL的相互勾通,其方法如下: 在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。 四、举例: 1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入
7、如下程序: Dim xlApp As Excel.Application 定义EXCEL类 Dim xlBook As Excel.Workbook 定义工件簿类 Dim xlsheet As Excel.Worksheet 定义工作表类 Private Sub Command1_Click() 打开EXCEL过程 If Dir(D:tempexcel.bz) = Then 判断EXCEL是否打开 Set xlApp = CreateObject(Excel.Application) 创建EXCEL应用类 xlApp.Visible = True 设置EXCEL可见 Set xlBook =
8、xlApp.Workbooks.Open(D:tempbb.xls) 打开EXCEL工作簿 Set xlsheet = xlBook.Worksheets(1) 打开EXCEL工作表 xlsheet.Activate 激活工作表 xlsheet.Cells(1, 1) = abc 给单元格1行驶列赋值 xlBook.RunAutoMacros (xlAutoOpen) 运行EXCEL中的启动宏 Else MsgBox (EXCEL已打开) End If End Sub Private Sub Command2_Click() If Dir(D:tempexcel.bz) Then 由VB关闭E
9、XCEL xlBook.RunAutoMacros (xlAutoClose) 执行EXCEL关闭宏 xlBook.Close (True) 关闭EXCEL工作簿 xlApp.Quit 关闭EXCEL End If Set xlApp = Nothing 释放EXCEL对象 End End Sub 2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为bb.xls的EXCEL文件。 3、在bb.xls中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘: Sub auto_open() Open d:tempexcel.bz F
10、or 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。这样就实现了VB与EXCEL的无缝连接。 用法:CFi
11、leDialog filedi;/定义一个文件夹对话框实例filedi.Domadal()/ 弹出对话框WM_NULL = $0000; WM_CREATE = $0001; 应用程序创建一个窗口 WM_DESTROY = $0002; 一个窗口被销毁 WM_MOVE = $0003; 移动一个窗口 WM_SIZE = $0005; 改变一个窗口的大小 WM_ACTIVATE = $0006; 一个窗口被激活或失去激活状态; WM_SETFOCUS = $0007; 获得焦点后 WM_KILLFOCUS = $0008; 失去焦点 WM_ENABLE = $000A; 改变enable状态 W
12、M_SETREDRAW = $000B; 设置窗口是否能重画 WM_SETTEXT = $000C; 应用程序发送此消息来设置一个窗口的文本 WM_GETTEXT = $000D; 应用程序发送此消息来复制对应窗口的文本到缓冲区 WM_GETTEXTLENGTH = $000E; 得到与一个窗口有关的文本的长度(不包含空字符) WM_PAINT = $000F; 要求一个窗口重画自己 WM_CLOSE = $0010; 当一个窗口或应用程序要关闭时发送一个信号 WM_QUERYENDSESSION = $0011; 当用户选择结束对话框或程序自己调用ExitWindows函数 WM_QUIT
13、= $0012; 用来结束程序运行或当程序调用postquitmessage函数 WM_QUERYOPEN = $0013; 当用户窗口恢复以前的大小位置时,把此消息发送给某个图标 WM_ERASEBKGND = $0014; 当窗口背景必须被擦除时(例在窗口改变大小时) WM_SYSCOLORCHANGE = $0015; 当系统颜色改变时,发送此消息给所有顶级窗口 WM_ENDSESSION = $0016; 当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束 WM_SYSTEMERROR = $0017; WM_SHOWWINDOW = $
14、0018; 当隐藏或显示窗口是发送此消息给这个窗口 WM_ACTIVATEAPP = $001C; 发此消息给应用程序哪个窗口是激活的,哪个是非激活的; WM_FONTCHANGE = $001D; 当系统的字体资源库变化时发送此消息给所有顶级窗口 WM_TIMECHANGE = $001E; 当系统的时间变化时发送此消息给所有顶级窗口 WM_CANCELMODE = $001F; 发送此消息来取消某种正在进行的摸态(操作) WM_SETCURSOR = $0020; 如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口 WM_MOUSEACTIVATE = $0021;
15、 当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口 WM_CHILDACTIVATE = $0022; 发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小 WM_QUEUESYNC = $0023; 此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息 WM_GETMINMAXINFO = $0024; 此消息发送给窗口当它将要改变大小或位置; WM_PAINTICON = $0026; 发送给最小化窗口当它图标将要被重画 WM_ICONERASEBKGND = $0027; 此消息发送给
16、某个最小化窗口,仅当它在画图标前它的背景必须被重画 WM_NEXTDLGCTL = $0028; 发送此消息给一个对话框程序去更改焦点位置 WM_SPOOLERSTATUS = $002A; 每当打印管理列队增加或减少一条作业时发出此消息 WM_DRAWITEM = $002B; 当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者 WM_MEASUREITEM = $002C; 当button, combo box, list box, list view control, or menu item 被创建时发送此消息给控件的所有者 WM_D
17、ELETEITEM = $002D; 当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息 WM_VKEYTOITEM = $002E; 此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息 WM_CHARTOITEM = $002F; 此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息 WM_SETFONT =
18、 $0030; 当绘制文本时程序发送此消息得到控件要用的颜色 WM_GETFONT = $0031; 应用程序发送此消息得到当前控件绘制文本的字体 WM_SETHOTKEY = $0032; 应用程序发送此消息让一个窗口与一个热键相关连 WM_GETHOTKEY = $0033; 应用程序发送此消息来判断热键与某个窗口是否有关联 WM_QUERYDRAGICON = $0037; 此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标 WM_COMPAREITEM = $0039; 发送此消息来判定combo
19、box或listbox新增加的项的相对位置 WM_GETOBJECT = $003D; WM_COMPACTING = $0041; 显示内存已经很少了 WM_WINDOWPOSCHANGING = $0046; 发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数 WM_WINDOWPOSCHANGED = $0047; 发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数 WM_POWER = $0048;(适用于16位的windows)当系统将要进入暂停状态时发送此消息 WM_COPYDATA =
20、 $004A; 当一个应用程序传递数据给另一个应用程序时发送此消息 WM_CANCELJOURNAL = $004B; 当某个用户取消程序日志激活状态,提交此消息给程序 WM_NOTIFY = $004E; 当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口 WM_INPUTLANGCHANGEREQUEST = $0050; 当用户选择某种输入语言,或输入语言的热键改变 WM_INPUTLANGCHANGE = $0051; 当平台现场已经被改变后发送此消息给受影响的最顶级窗口 WM_TCARD = $0052; 当程序已经初始化windows帮助例程时发送此消
21、息给应用程序 WM_HELP = $0053; 此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口 WM_USERCHANGED = $0054; 当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息; WM_NOTIFYFORMAT = $0055; 公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信
22、 WM_CONTEXTMENU = $007B; 当用户某个窗口中点击了一下右键就发送此消息给这个窗口 WM_STYLECHANGING = $007C; 当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口 WM_STYLECHANGED = $007D; 当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口 WM_DISPLAYCHANGE = $007E; 当显示器的分辨率改变后发送此消息给所有的窗口 WM_GETICON = $007F; 此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄; WM_SETICO
23、N = $0080; 程序发送此消息让一个新的大图标或小图标与某个窗口关联; WM_NCCREATE = $0081; 当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送; WM_NCDESTROY = $0082; 此消息通知某个窗口,非客户区正在销毁 WM_NCCALCSIZE = $0083; 当某个窗口的客户区域必须被核算时发送此消息 WM_NCHITTEST = $0084; 移动鼠标,按住或释放鼠标时发生 WM_NCPAINT = $0085; 程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时; WM_NCACTIVATE = $0086; 此消息发送给某个窗
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb EXCEL 连接
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。