VB代码:网页自动点击按钮代码-使用根目录下的aspic.exe文件打开*.jpg-结果输出/end,这些怎么弄成vb代码

如何用VB做提示对话框_百度知道
如何用VB做提示对话框
显示图标代码,包括按钮类型代码就是说弹出的那种提示框代码,都写出来
我有更好的答案
按默认排序
Title 可选的,直到用户对消息框作出响应才继续工作。字符串表达式, 512) 说明哪一个按钮是缺省值, context])MsgBox 函数的语法具有以下几个命名参数。 VbQuestion 32 显示 Warning Query 图标, title] [,只能由每组值取用一个数字、No 及 Cancel 按钮,识别用来向对话框提供上下文相关帮助的帮助文件。 vbSystemModal 4096 系统强制返回,指定显示按钮的数目及形式。 VbCritical 16 显示 Critical Message 图标,可以在程序代码中到处使用这些常数名称, 32。数值表达式是值的总和, 4096) 则决定消息框的强制返回性。 Context 可选的,缺省按钮是什么以及消息框的强制回应等, buttons] [, 48:部分 描述 Prompt 必需的,由所用字符的宽度决定,则将应用程序名放在标题栏中。如果省略 title,则也必须提供 helpfile,作为显示在对话框中的消息。prompt 的最大长度大约为 1024 个字符、换行符 (Chr(10)) 或是回车与换行符的组合 (Chr(13) & Chr(10)) 将各行分隔开来,由帮助文件的作者指定给适当的帮助主题的帮助上下文编号;而第四组值 (0。 VbRetryCancel 5 显示 Retry 及 Cancel 按钮。 vbDefaultButton1 0 第一个按钮是缺省值。 vbDefaultButton2 256 第二个按钮是缺省值:常数 值 描述 vbOKOnly 0 只显示 OK 按钮,则也必须提供 context。数值表达式;全部应用程序都被挂起。 VbInformation 64 显示 Information Message 图标。如果省略。 Buttons 可选的。如果 prompt 的内容超过一行,则可以在每一行之间用回车符 (Chr(13))。 VbYesNoCancel 3 显示 Yes。在对话框标题栏中显示的字符串表达式;应用程序一直被挂起, 256。 VbYesNo 4 显示 Yes 及 No 按钮,直到用户对消息框作出响应才继续工作。 Helpfile 可选的。 vbDefaultButton3 512 第三个按钮是缺省值,使用的图标样式。如果提供了 helpfile;第三组值 (0,则 buttons 的缺省值为 0。结果;第二组值 (16, helpfile。 VbOKCancel 1 显示 OK 及 Cancel 按钮。如果提供了 context、Retry 及 Ignore 按钮。 vbMsgBoxHelpButton 16384 将Help按钮添加到消息框 VbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口 vbMsgBoxRight 524288 文本为右对齐 vbMsgBoxRtlReading 1048576 指定文本应为在希伯来和阿拉伯语系统中的从右到左显示 第一组值 (0–5) 描述了对话框中显示的按钮的类型与数目。 设置值buttons 参数有下列设置值,并返回一个 Integer 告诉用户单击哪一个按钮。 vbApplicationModal 0 应用程序强制返回。 VbExclamation 48 显示 Warning Message 图标。 vbDefaultButton4 768 第四个按钮是缺省值。注意 这些常数都是 Visual Basic for Applications (VBA) 指定的,而不必使用实际数值, 64) 描述了图标的样式,等待用户单击按钮在对话框中显示消息。将这些数字相加以生成 buttons 参数值的时候。语法MsgBox(prompt[。 VbAbortRetryIgnore 2 显示 Abort。字符串表达式
你看完这个应该会明白 vb如何访问excel VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有 很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是 一个值得我们研究的课题。 举例: 1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序: Dim xlApp As Excel.Application '定义EXCEL类 Dim xlBook As Excel.Workbook '定义工件簿类 Dim xlsheet As Excel.Worksheet '定义工作表类 Private Sub Command1_Click() '打开EXCEL过程 If Dir(&D:\temp\excel.bz&) = && Then '判断EXCEL是否打开 Set xlApp = CreateObject(&Excel.Application&) '创建EXCEL应用类 xlApp.Visible = True '设置EXCEL可见 Set xlBook = xlApp.Workbooks.Open(&D:\temp\bb.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:\temp\excel.bz&) && && Then '由VB关闭EXCEL 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:\temp\excel.bz& For Output As #1 '写标志文件 Close #1 End Sub Sub auto_close() Kill &d:\temp\excel.bz& '删除标志文件 End Sub 4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操 作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会 重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。
msgbox(内容,按钮类型,提示框的标题),按钮类型常用的有vbokonly,vbokcancel(+vbinformation或vbquestion),还有很多的,不一一举例
msgbox就行了后面用&内容&
其他类似问题
您可能关注的推广
对话框的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VB有控件text1和text2.根目录下有1.txt文件,内容是A-Z26个字母共26行。在text1里输入C,在text2里输入D。_百度知道
VB有控件text1和text2.根目录下有1.txt文件,内容是A-Z26个字母共26行。在text1里输入C,在text2里输入D。
在text1里输入C。按按钮后,内容是A-Z26个字母共26行.根目录下有1,在text2里输入D.txt文件,程序将文件里的C改成D并保存。程序怎么弄啊VB 有控件text1和text2
提问者采纳
aa.Text Then
aa(i) = Text2.txt&aa.txt&quot, sTemp
ReDim Preserve aa(i)
If sTemp = Text1:\C:&#92.Text
aa(i) = sTemp
Kill &C.txt&
Open &aa:\ For Input As #1
Do While Not EOF(1)
Line Input #1;C; For Output As #2
For i = 0 To UBound(aa) - 1
Print #2Private Sub Command1_Click()
Dim sTemp As String
Dim aa() As String
Dim i As Integer
Open &quot
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
按默认排序
其他2条回答
'此举是提高运行速度;0If i&gt,i+1:&#92.text)&gt,;exit subend if Open FilePath
For Input As #1Do While Not EOF(1)Line Input #1;你未输入****&多此一举,但如果txt里面的内容的某一行并不只是一个“C”;0
Thenaa(i) = left(sT验证文件是否存在msgbox &;呵呵,31)=&quot,在循环体内重复访问控件属性会拖慢运行速度elsemsgbox &quot。 Private Sub Command1_Click()Dim sTemp As StringDim aa() As StringDim i As Integer,而是“*C*”之类的楼下的就不行了。,i-1) & mtext & mid(sTemp.txt&C, aa(i)NextClose #2End Sub &#39。不过可以稍微改下。;此举是为了方便改地址 if dir(filepath,len(stemp)-i)Elseaa(i) = sTempEnd Ifi = i + 1LoopClose #1&#39.text
'文件不存在,ii as integerDim MText as stringDim FilePath as stringif len(text2,楼下的代码可以解决你的问题。Open FilePath For Output As #2For i = 0 To UBound(aa) - 1Print #2!&quot,;,Mtext)&gt,&quot,下面打开为OutPut时自动删掉了txt里面所有内容了;Tip&Kill FilePath
'exit subend if FilePath=&quot,&quot, sTempReDim Preserve aa(i)i=instr(sT then
'Tip&0 thenMText=Text2如果你只是完成你所说的目的的话,希望你看完后能帮你点什么
非常感谢。你写的很好,还有解释也很清楚。但是上面那位老大的方法也是可行的,先来后到嘛,所以分只能给他了,不过感谢你的热心帮助。呵呵
不会你掺和啥!
根目录的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VB2010完美代码库_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
VB2010完美代码库
包​含​从​初​级​到​高​级​多​方​面​的​功​能​实​现​的​源​代​码
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢VB操作EXCEL表的常用方法
  VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。一、 VB读写EXCEL表:VB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlApp.Cells(row, col) =值 '给单元格(row,col)赋值XLApp.Cells(i, 1).Interior.ColorIndex = i'设计单元格颜色i=1--56xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏自己用代码就可以获取颜色列表了Sub yansecode()For i = 1 To 56XlApp.Cells(i, 1) = ixlapp.Cells(i, 1).Interior.ColorIndex = iNextEnd Sub4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。二、 EXCEL的宏功能:EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。三、 VB与EXCEL的相互勾通:充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。四、举例:1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:Dim xlApp As Excel.Application '定义EXCEL类Dim xlBook As Excel.Workbook '定义工件簿类Dim xlsheet As Excel.Worksheet '定义工作表类Private Sub Command1_Click() '打开EXCEL过程If Dir("D:\temp\excel.bz") = "" Then '判断EXCEL是否打开Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类xlApp.Visible = True '设置EXCEL可见Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") '打开EXCEL工作簿Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表xlApp .Activate '激活工作表xlApp .Cells(1, 1) = "abc" '给单元格1行驶列赋值xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL中的启动宏ElseMsgBox ("EXCEL已打开")End IfEnd SubPrivate Sub Command2_Click()If Dir("D:\temp\excel.bz") && "" Then '由VB关闭EXCELxlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏xlBook.Close (True) '关闭EXCEL工作簿xlApp.Quit '关闭EXCELEnd IfSet xlApp = Nothing '释放EXCEL对象EndEnd Sub2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。3、在"bb.xls"中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:Sub auto_open()Open "d:\temp\excel.bz" For Output As #1 '写标志文件Close #1End SubSub auto_close()Kill "d:\temp\excel.bz" '删除标志文件End Sub4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。范例一Option ExplicitPrivate Sub Command1_Click()Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlChar As New Excel.ChartDim xlSheet As New Excel.Worksheet'建立需要的对象Set xlApp = New Excel.ApplicationSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.Open("F:\BOOK1.xls")Set xlSheet = xlBook.Worksheets(1)'建立Chart 对象Set xlChar = xlApp.Charts.Add()xlChar.ChartType = xlLineMarkersCall xlChar.SetSourceData(xlSheet.Range("A1:E7"), xlColumns) '原数据ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"ActiveChart.HasLegend = TrueActiveChart.Legend.SelectSelection.Position = xlRight'选中建立的ChartObjects对象ActiveSheet.ChartObjects("图表 1").ActivateActiveChart.PlotArea.SelectActiveChart.Legend.Select'删除 退出(&X) 菜单Dim i As IntegerFor i = 1 mandBars("File").Controls.CountDebug.mandBars("File").Controls(i).CaptionIf Left$(mandBars("File").Controls(i).Caption, 2) = "关闭" Then</mandBars("File").Controls(i).Visible = False 'DeleteExit ForEnd IfNext'显示EXCELxlApp.Visible = TrueEnd Sub范例二RichTextBox1Dim xlApp As Excel.ApplicationSet xlApp = New Excel.Application---- 然后,可以用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。例如:Set xlApp = CreateObject("Excel.Application")‘激活EXCEL应用程序xlApp.Visible = False ‘隐藏EXCEL应用程序窗口Set xlBook = xlApp.Workbooks.Open(strDestination)‘打开工作簿,strDestination为一个EXCEL报表文件Set xlSheet = xlBook.Worksheets(1)‘设定工作表VB借助EXCEL实现表格设计1、定义EXCEL对象变量dim x as excel.application2、VB中,启动EXCELset x=createobject("excel.application")3、新建一个EXCEL工作簿x.workbooks.add4、选定工作表1set xsheet=xbook.worksheets(1)5、指定单元格,并赋值xsheet.cell(1,1)=ret.fields(0)6、指定EXCEL列宽xsheet.column(1).columnwidth=107、RANGE()函数,选定单元格区域range(cells(1,1),cells(10,20))8、设置EXCEL字体xsheet.range(cells(1,1),cells(10,20)).font.name="黑体"9、设置EXCEL为粗体xsheet.range(cells(1,1),cells(10,20)).fontbold=true10、设置EXCEL表格边框xsheet.range(cells(1,1),cells(10,20)).borders.linestyle=xlcontinuous11、运行时,显示EXCEL或隐藏EXCELx.visible=true12、保存工作簿xbook save13、退出EXCELx.quit14、交还控制权给EXCELset x=nothing15、打印EXCEL表x.active.window.selectedsheets.printout copies=numcopies16、退出EXCEL时,不出现保存提示。x.displayalerts=false17、怎样运用EXCEL公式?x.range("A3").formula= "=max(A1,A2)"18、EXCEL代码获取技巧打开EXCEL中的工具----宏----录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。19、合并单元格代码x.range("A2:A5").inergecells=true20、自动调整列宽代码x.column("A:I").autofit ' a到 I列自动调整列宽21、文本自动换行代码x.rows(3).wraptext=true22、设置字体颜色x.rows(1).font.colorindex=423、打印预览代码x.worksheets.printpreview24、打开EXCEL文件x.workbooks.open filename:="c:\my documents\my vb \lgx \dy.xls"========================================================================================如何用VB控制EXCEL生成报表做为一种简捷、系统的 Windows应用程序开发工具,Visual Basic 6 具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。但是,VB缺乏足够的、符合中文习惯的数据表格输出功能,虽然使用Crystal Report控件及 Crystal Reports程序可以输出报表,但操作起来很麻烦,中文处理能力也不理想。Excel作为Micorsoft公司的表格处理软件在表格方面有着强大的功能,我们可用VB5编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel 2000 的控制句柄,从而直接控制Excel 2000的一系列操作。下面给出一个实例:首先建立一个窗体(FORM1)在窗体中加入一个DATA控件和一按钮,引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object L选择"确定"。然后在FORM的LOAD事件中加入:Private Sub Form_Load()'数据库及表可以另选,本文以Nwind.mdb为例Data1.DatabaseName = "C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb"Data1.RecordSource = "Customers"Data1.RefreshEnd Sub在按钮的CLICK事件中加入Private Sub Command1_Click()Dim Irow, Icol As IntegerDim Irowcount, Icolcount As IntegerDim Fieldlen() '存字段长度值Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddSet xlSheet = xlBook.Worksheets(1)With Data1.Recordset.MoveLastIf .RecordCount & 1 ThenMsgBox ("Error 没有记录!")Exit SubEnd IfIrowcount = .RecordCount '记录总数Icolcount = .Fields.Count '字段总数ReDim Fieldlen(Icolcount).MoveFirstFor Irow = 1 To Irowcount + 1For Icol = 1 To IcolcountSelect Case IrowCase 1 '在Excel中的第一行加标题xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1).NameCase 2 '将数组FIELDLEN()存为第一条记录的字段长If IsNull(.Fields(Icol - 1)) = True ThenFieldlen(Icol) = LenB(.Fields(Icol - 1).Name)'如果字段值为NULL,则将数组Filelen(Icol)的值设为标题名的宽度ElseFieldlen(Icol) = LenB(.Fields(Icol - 1))End IfxlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)'Excel列宽等于字段长xlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)'向Excel的CellS中写入字段值Case ElseFieldlen1 = LenB(.Fields(Icol - 1))If Fieldlen(Icol) & Fieldlen1 ThenxlSheet.Columns(Icol).ColumnWidth = Fieldlen1'表格列宽等于较长字段长Fieldlen(Icol) = Fieldlen1'数组Fieldlen(Icol)中存放最大字段长度值ElsexlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)End IfxlSheet.Cells(Irow, Icol).Value = .Fields(Icol - 1)End SelectNextIf Irow && 1 ThenIf Not .EOF Then .MoveNextEnd IfNextWith xlSheet.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Name = "黑体"'设标题为黑体字.Range(.Cells(1, 1), .Cells(1, Icol - 1)).Font.Bold = True'标题字体加粗.Range(.Cells(1, 1), .Cells(Irow, Icol - 1)).Borders.LineStyle = xlContinuous'设表格边框样式End WithxlApp.Visible = True '显示表格xlBook.Save '保存Set xlApp = Nothing '交还控制给ExcelEnd WithEnd Sub本程序在中文Windows98、中文VB6下通过。===================================================VB5.0调用Office97技巧Visual Basic 5.0具有简单、易学等特点,深受初学者的欢迎,但也有一些不如人意的地方。例如,不能像Word 97那样进行拼写检查,不能像Excel 97那样具有很多的函数。如果我们能将Word 97和Exce l97的功能使用在Visual Basic 5.0中,就可以使VB达到锦上添花的目的。我们知道所有Office 97 应用程序都提供了ActiveX对象,我们可以在Visual Basic 5.0中使用它们调用Word 97要想在VB中调用Word 97,首先要打开VB的"工程"菜单中的"引用"项目,并在该项目对话框中选定"Microsoft Word 8.0 Object Library"就可以了。下面我们举例说明调用Word 97中的"拼写检查"和"单词统计"功能。首先新建一个工程并在窗体上放置一个TextBox控件和两个CommandButton控件,然后添入如下的代码:Option ExplicitDim Doc As New DocumentDim Visi As Boolean′拼写检查Private Sub Command1-Click()Form1.Caption = "拼写检查"Doc.Range.Text = Text1′确定范围Doc.Application.Visible = True ′将Word 97变为可见AppActivate Doc.Application.Caption′激活Word 97Doc.Range.CheckSpelling′拼写检查Text1 = Doc.Range.TextText1 = Left(Text1, Len(Text1) - 1)AppActivate CaptionEnd Sub′统计单词数Private Sub Command2-Click()Dim Dlg As Word.DialogDoc.Range = Text1.TextSet Dlg = Doc.Application.Dialogs(wdDialogDocumentStatistics)Dlg.Execute ′统计单词和字符Form1.Caption ="单词数:" & Str(Dlg.Words) & "词"& Str(Dlg.Characters) & "字符" ′显示统计结果End SubTop范例三Private Sub Form-Load()Form1.Caption ="调用Word 97"Text1.Text = ""Command1.Caption = "拼写检查"Command2.Caption = "统计单词"′使应用程序可见Visi = Doc.Application.VisibleEnd Sub′关闭应用程序Private Sub Form-Unload(Cancel As Integer)If Visi Then ′关闭文件Doc.Close savechanges:=FalseElseDoc.Application.Quit savechanges:=False ′关闭 Word 97End IfEnd Sub调用Excel 97使用Excel Sheet对象的技术可以处理可变数量的数据,并将结果最后送到你的Visual Basic 应用程序中。例子如下:新建一个工程并在新建的窗体上放置两个TextBox控件和一个CommandButton控件及六个Label控件。建设中的窗体如图2所示。程序代码如下:Option ExplicitPrivate Sub Command1-Click()Dim xObject As Object′调用Excel 97Set xObject = CreateObject("Excel.Sheet")Set xObject = xObject.Application.ActiveWorkbook.ActiveSheetxObject.Range("A1").Value = Text1.Text ′将数值送入Excel 97的A1单元格xObject.Range("A2").Value = Text2.Text ′将数值送入Excel 97的A2单元格xObject.Range("A3").Formula = "=MAX(A1,A2)" ′将最大值送入A3单元格xObject.Range("A4").Formula = "=ATAN(A1/A2)*180/PI()" ′将反正切值送入A4单元格′显示计算的结果Label1.Caption = xObject.Range("A3").ValueLabel2.Caption = xObject.Range("A4").ValueSet xObject = NothingEnd SubPrivate Sub Form_Load()Text1.Text = ""Text2.Text = ""Label1.Caption = ""Label2.Caption = ""End Sub该程序的作用是:首先在两个文本框(Text1和Text2)输入数值并分别将输入的数值送入Excel 97的"A1"和"A2"单元格中,然后用Excel 97中的"Max()"函数将计算的结果送入"A3" 单元格中;用反正切函数"ATAN()"进行计算并将结果送入"A4" 单元格中,最后输出。&table border="0" width="100%" cell===================================================浅谈Excel 的VB编程Excel是一个优秀的电子表格软件,如果你编的程序需要以报表的形式显示最终结果,它会是个不错的选择。你可以通过VB控制Excel显示数据表格。如果你不愿意深入了解Excel这些琐碎的细节,也不是没有权宜之计:你可以打开Excel中的工具→宏→录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。这样得到的程序一般都能正常运行,但其中的宏代码往往不够简洁,效率和可读性都不高。---- Excel编程碰到的第一个问题是表头。有时表头的形式比较复杂,需要横向或纵向合并单元格。请放心,只要没有斜杠,Excel都能应付得了。---- 例如合并A2~A5这4个单元格,你录制的宏代码会是这样:Range("A2:A5").SelectWith Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlBottom.WrapText = False.Orientation = 0.AddIndent = False.ShrinkToFit = False.MergeCells = FalseEnd WithSelection.Merge---- 而自己编程只要一句 Range.("A2:A5").mergecells=True 就可以解决问题。---- 表头形式定了,再就是表头的内容。如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会"越境"进入右边那个空白单元格,很不美观。这个问题可以通过在程序中设置列宽加以解决。---- Columns(14).columnwidth=12 '设置第14列列宽为12(缺省列宽为8.38)---- 如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行---- Columns("a:i").autofit 'a到i列自动调整列宽---- 让Excel随机应变吧。---- 但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。要是能保持默认列宽,让文本自动换行就好了。没问题,Excel包你满意。---- Rows(3).WrapText=True '让第三行各单元格中的文本自动换行---- 不过你最好再加一句 Rows(3) .VerticalAlignment = xlTop 让表头自动向上对齐,这样比较符合习惯。---- 你还可以给表头打上底色,让你的读者不至于看了打哈欠。---- Rows(2). Interior .ColorIndex = 5 '设置第2行底色为蓝色---- 再给表格的标题上色,这样更醒目一点。---- Rows(1).Font.ColorIndex=4---- 表头完成后该填数据了,一个一个地填实在是太慢了,如果你的数据是存放在一个二维数组中,那问题就简单多了。Dim Data(3,4)………… '数据处理Range("a2:d4").Value=Data---- 这样可以一次填入一个表的所有数据,够快了吧!不过提醒一句,Range对象大小最好与数组匹配,小了无法显示所有数据,大了则会在空白单元格只填入"N/A"表示没有取得数据。---- 如果需要在结果中显示多个同样规格的数据表,想在Range对象中加入循环变量,这也好办。Dim cell11,cell2Dim Data(3,4)…………For I =1 to 40………… '数据处理Set cell1=Worksheets("Sheet1").Cells(5*I-4,1)Set cell2=Worksheets("Sheet1").Cells(5*I-2,4)Worksheets("Sheet1").Range(cell1,cell2).value=DataNext I---- 表格填完了,现在该打表格线了,以下几条语句可以满足你的要求:With Worksheets("Sheet1").Range(cell1,cell2).borders.LineStyle=xlContinuous.weight=xlThinEnd With---- 好了,关于Excel的VB编程今天就讲到这儿吧。===================================================如何將Excel的文件导入Access文件?下面我已程序代码做成模块,只要导入必要之参数即可!此一模块共有四个参数:1、sSheetName:要导出资料的文件名称 (Sheet name),例如 Sheet12、sExcelPath:要导出资料的 Excel 档案路径名称 (Workbook path),例如 C:\book1.xls3、sAccessTable:要导入的 Access Table 名称,例如 TestTable4、sAccessDBPath:要导入的 Access 档案路径名称,例如 C:\Test.mdb在声明中加入以下:Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)Dim db As DatabaseDim rs As RecordsetSet db = OpenDatabase(sExcelPath, True, False, "Excel 5.0")Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " FROM [" & sSheetName & "$]")MsgBox "Table exported successfully.", vbInformation, "Yams"End Sub使用范例如下:將 C:\book1.xls 中的 Sheet1 导入 C:\Test.mdb 成为 TestTableExportExcelSheetToAccess "Sheet1", "C:\book1.xls", "TestTable", "C:\Test.mdb"===================================================Dim adoConnection As New ADODB.ConnectionDim adoRecordset As New ADODB.Recordset'OLE DB + ODBC Driver 方式:'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls"'Microsoft.Jet.OLEDB.4.0 方式,(建议)adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=FData Source=e:\temp\book2.Extended Properties='Excel 8.0;HDR=Yes'"adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic'注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持!adoConnection.Execute "insert into [sheet1$](F1) values(3)"adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4)VB操作excel全面控制Excel首先创建Excel对象,使用ComObj:DimExcelIDasExcel.ApplicationSetExcelIDasnewExcel.Application1)显示当前窗口:ExcelID.Visible:=T2)更改Excel标题栏:ExcelID.Caption:='应用程序调用MicrosoftExcel';3)添加新工作簿:ExcelID.WorkBooks.A4)打开已存在的工作簿:ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');5)设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].A或ExcelID.WorkSheets['Sheet2'].A6)给单元格赋值:ExcelID.Cells[1,4].Value:='第一行第四列';7)设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;8)设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米9)在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak:=1;参考代码:ActiveSheet.HPageBreaks(1).Location=Range("A22")10)在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[4].PageBreak:=0;11)指定边框线宽度:ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;1-左 2-右3-顶 4-底5-斜(\)6-斜(/)12)清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearC13)设置第一行字体属性:ExcelID.ActiveSheet.Rows[1].Font.Name:='隶书';ExcelID.ActiveSheet.Rows[1].Font.Color :=clBExcelID.ActiveSheet.Rows[1].Font.Bold:=TExcelID.ActiveSheet.Rows[1].Font.UnderLine:=T14)进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示';b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter:='第&P页';c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=2/0.035;d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=3/0.035;e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin:=2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin:=2/0.035;g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin:=2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin:=2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035;j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterVertically:=2/0.035;k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines:=T15)拷贝操作:a.拷贝整个工作表:ExcelID.ActiveSheet.Used.Range.Cb.拷贝指定区域:ExcelID.ActiveSheet.Range['A1:E2'].Cc.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.['A1'].PasteSd.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteS16)插入一行或一列:a.ExcelID.ActiveSheet.Rows[2].insert;b.ExcelID.ActiveSheet.Columns[1].insert;17)删除一行或一列:a.ExcelID.ActiveSheet.Rows[2].delete;b.ExcelID.ActiveSheet.Columns[1].delete;18)打印预览工作表:ExcelID.ActiveSheet.PrintP19)打印输出工作表:ExcelID.ActiveSheet.PrintO20)工作表保存:IfnotExcelID.ActiveWorkBook.SavedthenExcelID.ActiveSheet.PrintPreviewEndif21)工作表另存为:ExcelID.SaveAs('C:\Excel\Demo1.xls');22)放弃存盘:ExcelID.ActiveWorkBook.Saved:=T23)关闭工作簿:ExcelID.WorkBooks.C24)退出Excel:ExcelID.Q25)设置工作表密码:ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Contents:=True,Scenarios:=True26) EXCEL的显示方式为最大化ExcelID.Application.WindowState=xlMaximized27)工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState=xlMaximized28)设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook=329)'关闭时是否提示保存(true保存;false不保存)ExcelID.DisplayAlerts=False30)设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow=1ExcelID.ActiveWindow.FreezePanes=True31)设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"32)设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""33)设置显示方式(分页方式显示)ExcelID.ActiveWindow.View=xlPageBreakPreview34)设置显示比例ExcelID.ActiveWindow.Zoom=10035)让Excel响应DDE请求Ex.Application.IgnoreRemoteRequests=False用VB操作EXCELPrivateSubCommand3_Click()OnErrorGoToerr1DimiAsLongDimjAsLongDimobjExlAsExcel.Application'声明对象变量Me.MousePointer=11'改变鼠标样式SetobjExl=NewExcel.Application'初始化对象变量objExl.SheetsInNewWorkbook=1 '将新建的工作薄数量设为1objExl.Workbooks.Add '增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name="book1" '修改工作薄名称objExl.Sheets.Add,objExl.Sheets("book1")‘增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name="book2"objExl.Sheets.Add,objExl.Sheets("book2")‘增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name="book3"objExl.Sheets("book1").select'选中工作薄&book1&Fori=1To50 '循环写入数据Forj=1To5If i= 1ThenobjExl.selection.NumberFormatLocal="@" '设置格式为文本objExl.Cells(i,j)="& E "& & i & jElseobjExl.Cells(i,j)=i&jEndIfNextNextobjExl.Rows("1:1").select'选中第一行objExl.selection.Font.Bold=True'设为粗体objExl.selection.Font.Size=24'设置字体大小objExl.Cells.EntireColumn.AutoFit '自动调整列宽objExl.ActiveWindow.SplitRow=1 '拆分第一行objExl.ActiveWindow.SplitColumn=0 '拆分列objExl.ActiveWindow.FreezePanes=True'固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1" '设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns="" '打印标题objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_Format(Now,"yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View=xlPageBreakPreview '设置显示方式objExl.ActiveWindow.Zoom=100 '设置显示大小objExl.ActiveSheet.PageSetup.Orientation=xlLandscape ‘设置打印方向(横向)'给工作表加密码objExl.ActiveSheet.Protect"123",DrawingObjects:=True, _Contents:=True,Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests=FalseobjExl.Visible=True'使EXCEL可见objExl.Application.WindowState=xlMaximized'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState=xlMaximized'工作薄显示方式为最大化objExl.SheetsInNewWorkbook=3& '将默认新工作薄数量改回3个SetobjExl=Nothing '清除对象Me.MousePointer=0'修改鼠标ExitSuberr1:objExl.SheetsInNewWorkbook=3objExl.DisplayAlerts=False '关闭时不提示保存objExl.Quit'关闭EXCELobjExl.DisplayAlerts=True'关闭时提示保存SetobjExl=NothingMe.MousePointer=0EndSub数据库管理系统的开发人员经常被编制复杂的报表所困扰,VB的水晶报表可以设计简单的报表,但是设计出的报表缺乏灵活性。我利用VB操作EXCEL2000来生成复杂的报表。用VB创建外部EXCEL对象Microsoft Office应用程序提供了一个顶层Application 对象。下面语句显示了对Microsoft Excel的Application 对象的引用,用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。:Dim xlApp As Excel.ApplicationSet xlApp = New Excel.ApplicationSet xlApp = CreateObject("Excel.Application")xlApp.Visible = FalseSet xlBook = xlApp.Workbooks.Open(strDestination)Set xlSheet = xlBook.Worksheets(1)用EXCEL 2000设计报表的模版文件EXCEL 2000是一个非常优秀的创建报表的工具。它提供的单元格任意合并、拆分功能基本上能够满足设计复杂报表的要求。它对任意一个单元格的格式随意控制,因此它为设计复杂报表提供了强大的支持。根据用户提供的报表,我们可以很快在EXCEL里生成模版文件。模版文件只是为了满足用户多方面的需求而设计的。并且随着时间和实际情况的变化,表格格式有可能需要改变,我们设计一个模版文件可以“以不变应万变”了。在程序里我们不要对模版文件进行操作,我们只需要对模版文件的一个拷贝进行操作就行。程序代码如下:Dim strSource, strDestination As StringstrSource = App.Path & ""strDestination = App.Path & ""FileCopy strSource, strDestinationSet mobjExcel = New Excel.ApplicationSet mobjExcel = CreateObject("Excel.Application")mobjExcel.Visible = FalseSet mobjworkbook = mobjExcel.Workbooks.Open(strDestination)Set xlsheet = mobjworkbook.Worksheets(1)If Not opendatasource() ThenMsgBox "不能打开数据源!", , "提示"Unload MeExit SubEnd IfPrivate Function opendatasource()ssql="select shgt_dah,shgt_yth,shgt_ajtm,shgt_chtrq,shgt_shjdw,shgt_wzysh,shgt_tzzhsh,shgt_gdrq,shgt_bz from shgtajb"OpenResultset ssql, mrdorsopendatasource = TrueExit FunctionEnd Function生成工作表内容有了上述两步工作的铺垫,我们只要根据模板的格式给各单元格赋值如:Do while Not mrdors.Eof i=4 For j=0 to mrdors.rdocolumns.count-2 MobjExcel.Activesheet.cells(i,j+1)。value=mrdors.rdocolumns(j)。Value Next Mrdors.movenext Loop打印报表生成了工作表后,就可以对EXCEL发出打印指令了。在执行打印操作之前应该对EXCEL临时文件执行一次保存操作,以免在退出应用程序后EXCEL还提示用户是否保存已修改的文件。如下语句:xlBook.Save xlSheet.PrintOut xlApp.QuitPrivate Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application'声明对象变量Me.MousePointer = 11'改变鼠标样式Set objExl = New Excel.Application'初始化对象变量objExl.SheetsInNewWorkbook = 1& '将新建的工作薄数量设为1objExl.Workbooks.Add& '增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name = "book1"& '修改工作薄名称objExl.Sheets.Add , objExl.Sheets("book1") '增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name = "book2"objExl.Sheets.Add , objExl.Sheets("book2") '增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name = "book3"objExl.Sheets("book1").Select '选中工作薄&book1&For i = 1 To 50'循环写入数据For j = 1 To 5If i = 1 ThenobjExl.Selection.NumberFormatLocal = "@"& '设置格式为文本objExl.Cells(i, j) = " E " & i & jElseobjExl.Cells(i, j) = i & jEnd IfNextNextobjExl.Rows("1:1").Select '选中第一行objExl.Selection.Font.Bold = True'设为粗体objExl.Selection.Font.Size = 24 '设置字体大小objExl.Cells.EntireColumn.AutoFit& '自动调整列宽objExl.ActiveWindow.SplitRow = 1& '拆分第一行objExl.ActiveWindow.SplitColumn = 0'拆分列objExl.ActiveWindow.FreezePanes = True'固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"& '设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns = ""'打印标题objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _Format(Now, "yyyy年mm月dd日 hh:MM:ss")objExl.ActiveWindow.View = xlPageBreakPreview'设置显示方式objExl.ActiveWindow.Zoom = 100 '设置显示大小'给工作表加密码objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _Contents:=True, Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests = FalseobjExl.Visible = True& '使EXCEL可见objExl.Application.WindowState = xlMaximized'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState = xlMaximized'工作薄显示方式为最大化objExl.SheetsInNewWorkbook = 3'将默认新工作薄数量改回3个Set objExl = Nothing'清除对象Me.MousePointer = 0'修改鼠标Exit Suberr1:objExl.SheetsInNewWorkbook = 3objExl.DisplayAlerts = False& '关闭时不提示保存objExl.Quit'关闭EXCELobjExl.DisplayAlerts = True'关闭时提示保存Set objExl = NothingMe.MousePointer = 0End Sub=====================================Visual Basic简称(VB)是设计Windows应用程序强有力的开发工具,“全球绝大多数Windows应用程序都是用VB开发的”; Excel是目前使用最广泛的办公应用软件之一,它具有强大的数学分析与计算功能,包括很多VB没有的求值数学表达式的函数和方法。由于Excel的应用程序对象是外部可创建的对象,所以能从VB应用程序内部来程序化操纵Excel。本文结合自己的实践和体会,谈谈如何在VB6.0应用程序中调用Exce12000,供大家参考。一、Excel对象模型为了在VB应用程序中调用Excel,必须要了解Excel对象模型。Excel对象模型描述了Excel的理论结构,所提供的对象很多,其中最重要的对象,即涉及VB调用Excel最可能用到的对象有:二、调用Excel在VB应用程序中调用Excel,实质是将Excel作为一个外部对象来引用,由Excel对象模型提供能从VB应用程序内部来程序化操纵的对象以及相关的属性、方法和事件。1、在VB工程中添加对Excel类型库的引用为了能从VB应用程序中访问Excel丰富的内部资源,使Excel应用程序运行得更快,需要在VB工程中添加对Excel类型库的引用。具体步骤如下:a)从VB5“工程”菜单中选择“引用”;b) 在“引用”对话框中选择Excel类型库:"Microsoft Excel9.0 Object Library";c)单击左边小方框,使之出现“√”符号;d)按“确定”退出。注:要想在VB应用程序中调用Excel,你的计算机系统中必须安装Excel。2、引用Application对象Application对象是Excel对象模型的顶层,表示整个Excel应用程序。在VB应用程序中调用Excel,就是使用Application对象的属性、方法和事件。为此,首先要声明对象变量:Dim VBExcel As Object或直接声明为Excel对象:Dim VBExcel As Excel.Application在声明对象变量之后,可用CreateObject函数或GetObject函数给变量赋值新的或已存在的Application对象引用。a)用CreateObject函数生成新的对象引用:Set VBExcel=CreateObject ("Excel.Application")字符串“Excel.Application”是提供Excel应用程序的编程ID,这个变量引用Excel应用程序本身。b)用GetO场ect函数打开已存在的对象引用:Set AppExcel=GetObject("SAMP.XLS")上面语句打开文件SAMP.XLS。3、Application对象常用的属性、方法属性、方法 方法Visible属性 取True或False,表明Excel应用程序是否可见。Left,Top属性 Excel窗口的位置;Height, Width属性 Excel窗口的大小;WindowState属性 指定窗口的状态,取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。Quit方法 退出Microsoft Excel;Calculate方法 重新计算所有打开的工作簿、工作表或单元格。Evaluate方法 求值数学表达式并返回结果。示例1:求值数学表达式:Dim VBExcel As ObjectSet VBExcel=CreateObject ("Excel.Application")X=VBExcel. Evaluate ("3+5*(cos (1/log (99. 9)))")三、使用Excel应用程序如前所述,在VB应用程序中调用Excel应用程序,就是使用Application对象的属性、方法和事件。下面分类给出其中常用的属性和方法。1、使用工作薄Workbook对象代表Excel应用程序中当前打开的一个工作簿,包含在Workbooks集合中。可以通过Workbooks集合或表示当前活动工作簿的Active Workbook对象访问Workbook对象。常用的方法有:属性、方法 意义Add方法 创建新的空白工作簿,并将其添加到集合中。Open方法 打开工作簿。Activate方法 激活工作簿,使指定工作簿变为活动工作簿,以便作为Active Workbook对象使用。Save方法 按当前路径和名称保存现有工作簿(如是首次保存,则将其保存到缺省名称中,如BOOK1.XLS)。SaveAs方法 首次保存工作簿或用另一名称保存工作簿。Close方法 关闭工作簿。PrintOut方法 打印工作簿,语法为:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)可选参数:From:打印的起始页号。如省略将从起始位置开始打印。To:打印的终止页号。如省略将打印至最后一页。Copies:要打印的份数。如省略将只打印一份。Preview:如果为True则Excel打印指定对象之前进行打印预览。如果为False,或省略则立即打印该对象。Printer:设置活动打印机的名称。ToFile:如果为True则打印输出到文件。Collate:如果为True则逐份打印每份副本。下面语句将活动工作簿的2到5页打印3份:ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3示例2:生成、保存、关闭工作簿Dim VBExcel As Excel.ApplicationSet VBExcel== CreateObject("Excel.Application")With VBExcel.Workbooks.AddWith ActiveWorkbook.Save As"C: \Temp \OUTPUT.XLS".CloseEnd With.QuitEnd With2、使用工作表Sheets集合表示工作簿中所有的工作表。可以通过Sheets集合来访问、激活、增加、更名和删除工作表。一个Worksheet对象代表一个工作表。常用的属性、方法有:属性、方法 意义Worksheets属性 返回Sheets集合。Name属性 工作表更名。Add方法 创建新工作表并将其添加到工作簿中。Select方法 选择工作表。Copy方法 复制工作表。Move方法 将指定工作表移到工作簿的另一位置。Delete方法 删除指定工作表。PrintOut方法 打印工作表。示例3:将C盘工作簿中的工作表复制到A盘工作簿中:Dim VBExcel As Excel.ApplicationSet VBExcel=CreateObject("Excel.Application")With VBExcel.Workbooks.Open "C:\Temp\OUTPUT.XLS".Workbooks.Open"A:\OUTPUT1.XLS".Workbooks("OUTPUT.XLS").Sheets ("Sales").Copy.Workbooks("OUTPUT1.XLS).Workbooks("OUTPUT1.XLS").Save.Workbooks("OUTPUT.XLS").Close.Workbooks("OUTPUTI.XLS").Close.QuitEnd With3、使用单元范围Range对象代表工作表的某一单元格、某一行、某一列、某一选定区域或者某一三维区域。常用的属性、方法有:属性、方法 意义Range属性 Range (arg)其中arg为A1--样式符号,表示单个单元格或单元格区域。Cells属性 Cells (row, col )(其中row为行号,col为列号)表示单个单元格。ColumnWidth属性 指定区域中所有列的列宽。Rowl3eight属性 指定区域中所有行的行宽。Value属性 指定区域中所有单元格的值(缺省属性)。Formula属性 指定单元格的公式,由A1--样式引用。Select方法 选择范围。Copy方法 将范围的内容复制到剪贴板。C1earContents方法 清除范围的内容。Delete方法 删除指定单元范围。4、使用图表Chart对象代表工作簿中的图表。该图表既可为嵌人式图表(包含于ChartObject对象中)也可为分立的图表工作表。常用方法有:方法 意义Add方法 新建图表工作表。返回Chart对象。PrineOut方法 打印图表。ChartWizard方法 修改给定图表的属性,其语法为:ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels,SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)其中:Source:包含新图表的源数据的区域。如省略,将修改活动图表工作表或活动工作表中处于选定状态的嵌人式图表。Gallery:图表类型。其值可为下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13DBar、x13DColumn, x13DLine, x13DPie、x13 DSurface、xlDoughnut或xlDefaultAutoFormat。Format:内置自动套用格式的编号。如省略,将选择默认值。P1otBy:指定系列中的数据是来自行(xlRows)还是列(xlColumns)。CategoryLabels:表示包含分类标志的源区域内行数或列数的整数。SeriesLabels:表示包含系列标志的源区域内行数或列数的整数。HasLegend:若指定True,则图表将具有图例。Title:图表标题文字。CategoryTitle:分类轴标题文字。ValueTitle:数值轴标题文字。ExtraTitle:三维图表的系列轴标题,或二维图表的第二数值轴标题。可组合使用Add方法和ChartWizard方法,以创建包含工作表中数据的图表工作表。下例基于工作表“Sheetl”中单元格区域“A1:A20”中的数据生成新的折线图并打印。With Charts.Add.ChartWizard source:=Worksheets ("sheet1").Range ("a1:a20"),gallery:=xlLine, title:=“折线图表”.PrintoutEnd With5、使用Excel工作表函数在VB语句中可使用大部分的Excel工作表函数,可通过WorksheetFunction对象调用Excel工作表函数。下面的Sub过程用Min工作表函数求出指定区域中单元格的最小值,并通过消息框显示结果值。Sub UseFunction()Dim myRange As RangeSet myRange=Worksheets ("Sheet1").Range("B2:F10")answer=Application.WorksheetFunction.Min(myRange)MsgBox answerEnd Sub如果使用以区域引用为参数的工作表函数,必须指定一个Range对象。如可用Match工作表函数对A1:A10区域的所有单元格进行搜索。Sub FindFirst()my Var=Application.WorksheetFunction.Match (9, Worksheets( 1).Range("A1:A10"),0)MsgBox myVarEnd Sub要在单元格中插人工作表函数,可将该函数指定为对应于Range对象的Formula属性值。在以下示例中,将当前工作簿Sheetl内A1:B3区域的Formula属性指定为RAND工作表函数(此函数产生二个随机数)。Sub InsertFormula()Worksheets ("Sheet1" ).Range("A1:B3").Formula="RAND()"End Sub以上简要介绍了Excel对象模型中部分对象及其属性和方法,更详细的信息可参阅Excel 2000帮助中的“Microsoft Excel Visual Basic参考”一节的内容。实际上,Microsoft Office家族的Word,PowerPoint, Access和Project等应用程序都可以在VB应用程序中调用,其原理和步骤完全相同,只是其对象模型有所不同而已。---- VB程序中直接调用Excel的格式如下:Private Sub menudy_Click(Index As Integer)\这是一个打印菜单Select Case IndexCase 0On Error GoTo kungaaa = Shell(“D:Program FilesMicrosoftOfficeOfficeEXCEL.EXE c:cnglcngl.xls", 1)Case 1On Error GoTo kong \作为空表处理aaa = Shell(“D:Program FilesMicrosoftOfficeOfficeEXCEL.EXE c:cnglcngly.xls", 1)Case 3Case 4Case 5End SelectExit Subkung:aaa = Shell(“EXCEL.EXE c:cnglcngl.xls", 1)Exit Subkong:aaa = Shell(“EXCEL.EXE c:cnglcngly.xls", 1)End Sub----由于Word97和Excel97等高版本的Office组件都有和VB 的接口:VB 编辑器,所以我们可以直接利用 VB 编辑器编写我们需要的程序。步骤如下:进入Excel97后,用鼠标点击菜单栏中的“工具”按钮,选择“宏”,再选择“VB 编辑器”。----“VB编辑器”的编辑界面非常类似于“Visual Basic"的界面。我们可以从它的控件“工程资源管理器”中插入需要的“添加用户窗体、添加模块、添加类模块”,并且从“属性窗口”中加入属性。----例如,我们可以制定一个打印窗体,通过程序来实现数据定位和循环调用打印过程。Public panduan As BooleanPrivate Sub CommandButton1_Click()changeIf panduan ThenUnload MeElseTextBox1.Text = “"End IfEnd SubSub change()If Not judgeday(TextBox1.Text) Then GoTo errorpanduan = TrueDim sql As StringDim db As DatabaseDim rs As Recordsetsql = “SELECT * From 数据表"sql = sql + “ WHERE (((数据表.日期)=#" + TextBox1.Text + “#))"Setdb =OpenDatabase(Application.ThisWorkbook.Path+“cngl.mdb")Set rs = db.OpenRecordset(sql, dbOpenDynaset)If rs.EOF ThenMsgBox (“此日期无数据")Exit SubEnd Ifdaima1 = rs.Fields(“代码")Sheet1.Range(“e5").Value = rs.Fields(“日期")Sheet1.Range(“f7").Value = rs.Fields(“数据表记录")Sheet1.Range(“d13").Value = rs.Fields(“整数100")Sheet1.Range(“d15").Value = rs.Fields(“整数50")Sheet1.Range(“d17").Value = rs.Fields(“整数10")Sheet1.Range(“d19").Value = rs.Fields(“整数5")Sheet1.Range(“d21").Value = rs.Fields(“整数2")Sheet1.Range(“d23").Value = rs.Fields(“整数1")Sheet1.Range(“h13").Value = rs.Fields(“其他100")Sheet1.Range(“h15").Value = rs.Fields(“其他50")Sheet1.Range(“h17").Value = rs.Fields(“其他10")Sheet1.Range(“h19").Value = rs.Fields(“其他5")Sheet1.Range(“h21").Value = rs.Fields(“其他2")Sheet1.Range(“h23").Value = rs.Fields(“其他1")Sheet1.Range(“d37").Value = Sheet1.Range(“d13").Value * 100 + Sheet1.Range(“d15").Value * 50 + Sheet1.Range(“d17").Value * 10 +Sheet1.Range(“d19").Value * 5 + Sheet1.Range(“d21").Value * 2 + Sheet1.Range(“d23").ValueSheet1.Range(“h37").Value = Sheet1.Range(“h13").Value * 100 + Sheet1.Range(“h15").Value * 50 + Sheet1.Range(“h17").Value * 10 +Sheet1.Range(“h19").Value * 5 + Sheet1.Range(“h21").Value * 2 + Sheet1.Range(“h23").ValueDim sql1 As StringDim db1 As DatabaseDim rs1 As Recordsetsql1 = “SELECT * From 代码字典"sql1 = sql1 + “WHERE (((代码字典.代码)=" & daima1 & “))"Setdb1 =OpenDatabase(Application.ThisWorkbook.Path+ “cngl.mdb")Set rs1 = db1.OpenRecordset(sql1, dbOpenDynaset)Sheet1.Range(“h41").Value = rs1.Fields(“代码字典名称")Exit Suberror:MsgBox (“日期输入错误")panduan = FalseEnd SubPrivate Sub TextBox1_Change()End SubPrivate Sub UserForm_Activate()dyxjkc.Top = 30dyxjkc.Left = 230End Sub----具体的表格画线可以由Excel自动完成,因此简化了VB 编程的步骤,并且节约调试程序和画线定位的时间。这两天编了一个程序,基本功能是从自动站B文件(ACCESS数据库文件)查询当月的日数据生成月简表,调出数据很好实现,程序的核心源码是把这些数据写入一个Excel模板中,这是我以前就想学会的一个功能,但没有好好去找资料,为编这个程序在网上查找了一些资料,只用一小段代码就实现了把数据写入Excel模板中的功能,下面是基本源码,后面附几篇用VB控制的文章,希望对大家有益。(如果大家感兴趣的话,我可以把那个从自动站中调用数据并形成日数据EXCEL文件的源码发上来)Dim exl As New Excel.ApplicationDim book As New Excel.WorkbookDim sheet As New Excel.Worksheet'先使用excel制作一个模板Set book = exl.Workbooks.Open("你制作的excel的路径")Set sheet = book.Worksheets(1)'在excel的格子中写入你想打印的内容With sheet.Cells(Row, col) = ""End Withsheet.PrintOutbook.CloseSet book = Nothingexl.QuitSet exl = NothingExcel、Access、VB的结合应用---- 微软公司的Office系列办公软件相信已是众所周知,其中Excel强大的统计制表功能、Access功能完备的数据处理能力深受众多用户所喜爱。Visual Bsaic更是微软公司又一有力的产品,它简单易学,在Windows编程中的应用十分广泛。本文通过介绍数据处理及复杂表格的打印,来讨论VB与Excel及Access的结合运用。---- 由于笔者所在的公司员工众多,在进行职工养老保险缴费的计算工作时,若使用劳动局编制的软件(用Foxbase编写),无论是在管理或维护方面均显得力不从心。于是在公司领导的强烈要求下,决定由笔者构思重新编制。基本思路是:1.将所有员工资料输入Access进行处理,以便于维护。2.在Excel中预先制成有表头的空表(Access相对欠缺处理复杂表格的能力),对需要进行金额汇总或其他运算的单元格可直接输入公式。3.在VB中编写程序代码,从Access中提取数据填入Excel对应表格相应的单元格,并输出至打印机。---- 部分窗体及源程序代码如下:---- 1.程序主模块---- 定义Excel、Access对象变量,显示系统启动画面,进入系统主程序界面。强调一下,在编写程序之前须加入对Excel及Access库函数的引用,具体操作是:选择菜单栏'工程'\'引用…',将'可使用的引用'列表框内'Microsoft Access 8.0 Object Library'和 'Microsoft Excel 8.0 Object Library'两项前的复选框标为选中,按"确定"返回。mdsMain.bas'定义数据库记录集及Excel对象变量Public ex As New Excel.ApplicationPublic exwbook As Excel.WorkbookPublic exsheet As Excel.WorksheetPublic mydatabase As DatabasePublic myrecordset1 As Recordset[定义记录集]…………Public Opt As Integer '报表选项[Opt为frmSelreport.frm返回值]Public isYN As BooleanSub Main()Load frmSplashfrmSplash.ShowfrmSplash.Label2.Caption =" 系统正在加载Access数据库..."Set mydatabase = OpenDatabase("c:\sbda\sbda.mdb")Set myrecordset1 = mydatabase.OpenRecordset("报表打印(一)")[此处对记录集赋值]…………frmSplash.Label2.Caption =" 系统正在加载Excel电子表格..."Set ex = CreateObject("excel.application")Set exwbook = ex.Workbooks.Open("c:\sbda\sbda.xls")Load FrmInput  '将数据输入窗体加载到内存中Unload frmSplashLoad FrmMain'将主程序界面加载到内存中End Sub---- 2.报表打印模块---- 其中ExcelDoForVB1()是一子程序,由prnProess()调用,作用是从Access中提取所需数据资料,填入Excel对应工作表(Worksheet)的相应单元格(Cells)中,然后打印已填入数据的表格;prnProess()则负责实现对VB通用对话框(Commom Dialog)中打印功能的控制。mdlPrint.basOption Explicit'定义循环计数变量Public nRow As Integer, nCol AsInteger, nBtoE As Integer'定义变量接收打印对话框返回值Public BeginPage, EndPage, NumCopies'程序运行时需进行判断的各种标志Public nflag, Flag, ifNum'数据记录集中指针移动数Public PageN As Integer, n As Integer'bar1为进度条Public bar1 As ObjectSub prnProess()'控制通用对话框打印功能Set bar1 = FrmPrint.PgsBar1 '进度条On Error GoTo errhandle:If Flag = 0 Then '当打印对话框中选"全部"时Select Case Opt'选择需要打印的表格Case 1nflag = 1myrecordset1.MoveFirstmyrecordset1.MovePreviousPageN = 1Do While nflag = 1Call ExcelDoForVB1'数据填入Excel单元格打印PageN = PageN + 1LoopCase 2…………End SelectElseIf Flag = 2 Then'当打印对话框中选"页"时If EndPage - BeginPage = 0 ThenifNum = 0ElseIf EndPage - BeginPage & 0 ThenifNum = 1ElseifNum = 2End IfEnd IfSelect Case ifNumCase 2Exit SubCase 0Select Case Opt '选择需要打印的表格Case 1myrecordset1.MoveFirstn = (BeginPage - 1) *(49 - 4 + 1) - 1myrecordset1.Move nPageN = BeginPageCall ExcelDoForVB1'数据填入Excel单元格并打印Case 2…………End SelectCase 1Select Case Opt'选择需要打印的表格Case 1myrecordset1.MoveFirstn = (BeginPage - 1) *(49 - 4 + 1) - 1myrecordset1.Move nPageN = BeginPageFor nBtoE = BeginPage To EndPageCall ExcelDoForVB1'填入Excel单元格并打印PageN = PageN + 1Next nBtoECase 2…………End SelectEnd SelectEnd IfEnd IfFrmMain.Visible = TrueExit Suberrhandle:FrmPrint.Visible = FalseFrmMain.Visible = TrueEnd Sub---- 注意,下段仅通过ExcelDoForVB1()对"报表(一)"的处理,来说明数据填入Excel并打印的整个过程。Sub ExcelDoForVB1()  '打印报表(一)FrmPrint.Visible = TrueSet exsheet = exwbook.Worksheets("sheet1")ex.Sheets("Sheet1").Selectex.Range("A4:U49").Selectex.Selection.ClearContentsex.Range("A4").Selectbar1.Min = 0bar1.Max = 45For nRow = 4 To 49bar1.Value = nRow - 4 '进度显示栏进程myrecordset1.MoveNextIf myrecordset1.EOF Thennflag = 0Exit ForEnd IfFor nCol = 1 To 21exsheet.Cells(nRow, nCol) =myrecordset1.Fields(nCol - 1)Next nColNext nRowexsheet.Cells(52, 21) = "第 " + CStr(PageN) + " 页"FrmPrint.Visible = Falsebar1.Value = 0ActiveWindow.SelectedSheets.PrintOut Copies:=NumCopiesEnd Sub---- 虽然本文针对的是大多数已熟练掌握数据库技术,且精通编程之道的朋友们。但笔者认为仍有必要提一提将数据输入Access的过程,因为编出来的软件更多是面向各类普通用户,对他们来说最要紧的是好用,而其间的一系列关联并不想深究。所以设计一个好的输入界面十分有必要,在设计时可以运用VB提供的Data控件,当然若是考虑性能的话还可以用代码直接操纵数据。关于如何使用Data控件访问数据库,在Visual Basic的联机手册(Online book)中有很详细的说明,此处不再赘述。---- 文中的所有程序在Visual Bsaic5.0中文专业版及Office97中文版中调试通过。---- 例如合并A2~A5这4个单元格,你录制的宏代码会是这样:Range("A2:A5").SelectWith Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlBottom.WrapText = False.Orientation = 0.AddIndent = False.ShrinkToFit = False.MergeCells = FalseEnd WithSelection.Merge---- 而自己编程只要一句 Range.(“A2:A5”).mergecells=True 就可以解决问题。---- 表头形式定了,再就是表头的内容。如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会“越境”进入右边那个空白单元格,很不美观。这个问题可以通过在程序中设置列宽加以解决。---- Columns(14).columnwidth=12 ‘设置第14列列宽为12(缺省列宽为8.38)---- 如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行---- Columns(“a:i”).autofit ‘a到i列自动调整列宽---- 让Excel随机应变吧。---- 但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。要是能保持默认列宽,让文本自动换行就好了。没问题,Excel包你满意。---- Rows(3).WrapText=True ‘让第三行各单元格中的文本自动换行---- 不过你最好再加一句 Rows(3) .VerticalAlignment = xlTop 让表头自动向上对齐,这样比较符合习惯。---- 你还可以给表头打上底色,让你的读者不至于看了打哈欠。---- Rows(2). Interior .ColorIndex = 5 '设置第2行底色为蓝色---- 再给表格的标题上色,这样更醒目一点。---- Rows(1).Font.ColorIndex=4---- 表头完成后该填数据了,一个一个地填实在是太慢了,如果你的数据是存放在一个二维数组中,那问题就简单多了。Dim Data(3,4)………… ‘数据处理Range(“a2:d4”).Value=Data---- 这样可以一次填入一个表的所有数据,够快了吧!不过提醒一句,Range对象大小最好与数组匹配,小了无法显示所有数据,大了则会在空白单元格只填入“N/A”表示没有取用EXCEL来打印报表并生成折线图Private Sub PrintFunc()on error goto PrintFunc_ErrDim Ct As ObjectSet ex = CreateObject("Excel.Application")'增加工作表ex.Workbooks.Add'输出数据ex.Range("A1").Value = "系列1"ex.Range("A2").Value = 8ex.Range("A3").Value = 16ex.Range("A4").Value = 7ex.Range("A5").Value = 22ex.Range("A6").Value = 13ex.Range("A7").Value = 15ex.Range("A8").Value = 11ex.Range("B1").Value = "系列2"ex.Range("B2").Value = 5ex.Range("B3").Value = 6ex.Range("B4").Value = 17ex.Range("B5").Value = 10ex.Range("B6").Value = 3ex.Range("B7").Value = 9ex.Range("B8").Value = 16'设定表格样式ex.Range("A1", "B8").Borders.LineStyle = xlContinuousex.Cells(, 1).ColumnWidth = 25ex.Cells(, 2).ColumnWidth = 25’插入折线图Set Ct = ex.Worksheets("sheet1").ChartObjects.Add(0, 130, 350, 250)Ct.Chart.ChartWizard Source:=ex.Worksheets("sheet1").Range("A2:B8"), _gallery:=xlLine, Title:="New Chart"ex.Visible = True'打印预揽ex.ActiveWindow.SelectedSheets.PrintPreview'关闭EXCELex.Visible = Falseex.Worksheets("sheet1").ChartObjects.Deleteex.ActiveWorkbook.Close savechanges:=FalsePrintFunc_Err:Set ex = NothingSet Ct = Nothingend Sub在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外部交流。在VisualBasic中制作报表,通常是用数据环境设计器(DataEnvironmentDesigner)与数据报表设计器(DataReportDesigner),或者使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。由于Excel具有自己的对象库,在VisualBasic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。这样实现了VisualBasi应用程序对Excel的控制。本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。1)创建Excel对象Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用得最多的五个对象。(1)Application对象Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。(2)Workbook对象Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。(3)Worksheet对象Worksheet对象包含于Workbook对象,表示一个Excel工作表。(4)Range对象Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。(5)Cells对象Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:DimzsbexcelAsExcel.ApplicationSetzsbexcel=NewExcel.Applicationzsbexcel.Visible=True如要Excel不可见,可使zsbexcel.Visible=Falsezsbexcel.SheetsInNewWorkbook=1Setzsbworkbook=zsbexcel.Workbooks.Add2)设置单元格和区域值要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells属性。Withzsbexcel.ActiveSheet.Cells(1,2).Value="100".Cells(2,2).Value="200".Cells(3,2).Value="=SUM(B1:B2)".Range("A3:A9")="中国人民解放军"EndWith要设置单元格或区域的字体、边框,可以利用Range对象或Cells对象的Borders属性和Font属性:Withobjexcel.ActiveSheet.Range("A2:K9").Borders'边框设置.LineStyle=xlBorderLineStyleContinuous.Weight=xlThin.ColorIndex=1EndWithWithobjexcel.ActiveSheet.Range("A3:K9").Font'字体设置.Size=14.Bold=True.Italic=True.ColorIndex=3EndWith通过对Excel单元格和区域值的各种设置的深入了解,可以创建各种复杂、美观、满足需要的、具有自己特点的报表。3)预览及打印生成所需要的工作表后,就可以对EXCEL发出预览、打印指令了。zsbexcel.ActiveSheet.PageSetup.Orientation=xlPortrait'设置打印方向zsbexcel.ActiveSheet.PageSetup.PaperSize=xlPaperA4'设置打印纸的打下zsbexcel.Caption="打印预览"'设置预览窗口的标题zsbexcel.ActiveSheet.PrintPreview'打印预览zsbexcel.ActiveSheet.PrintOut'打印输出通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,最终进行打印输出。为了在退出应用程序后EXCEL不提示用户是否保存已修改的文件,需使用如下语句:zsbexcel.DisplayAlerts=Falsezsbexcel.Quit'退出EXCELzsbexcel.DisplayAlerts=True如此设计的报表打印是通过EXCEL程序来后台实现的。对于使用者来说,根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。4)具体实例下面给出一个具体实例,它在window98、VisualBasic6.0、MicrosoftOffice97的环境下调试通过。在VB中启动一个新的StandardEXE工程,在“工程”菜单的“引用”选项下引用ExcelObjectLibrary然后在Form中添加一个命令按钮cmdExcel最后在窗体中输入如下代码:DimzsbexcelAsExcel.ApplicationPrivateSubcmdExcel_Click()Setzsbexcel=NewExcel.Applicationzsbexcel.Visible=Truezsbexcel.SheetsInNewWorkbook=1Setzsbworkbook=zsbexcel.Workbooks.AddWithzsbexcel.ActiveSheet.Range("A2:C9").Borders'边框设置.LineStyle=xlBorderLineStyleContinuous.Weight=xlThin.ColorIndex=1EndWithWithzsbexcel.ActiveSheet.Range("A3:C9").Font'字体设置.Size=14.Bold=True.Italic=True.ColorIndex=3EndWithzsbexcel.ActiveSheet.Rows.HorizontalAlignment=xlVAlignCenter'水平居中zsbexcel.ActiveSheet.Rows.VerticalAlignment=xlVAlignCenter'垂直居中Withzsbexcel.ActiveSheet.Cells(1,2).Value="100".Cells(2,2).Value="200".Cells(3,2).Value="=SUM(B1:B2)".Cells(1,3).Value="中国人民解放军".Range("A3:A9")="50"EndWithzsbexcel.ActiveSheet.PageSetup.Orientation=xlPortrait'xlLandscapezsbexcel.ActiveSheet.PageSetup.PaperSize=xlPaperA4zsbexcel.ActiveSheet.PrintOutzsbexcel.DisplayAlerts=Falsezsbexcel.Quitzsbexcel.DisplayAlerts=TrueSetzsbexcel=NothingExcel表格生成和公式设置十分强大便利,是一个强有力的信息分析与处理工具。Visual Basic是一套可视化、面向对象、事件驱动方式的结构化高级程序设计语言,正成为高效率的Windows应用程序开发工具。 由于微软的努力,Visual Basic应用程序版可作为一种通用宏语言被所有微软可编程应用软件共享。Excel面始之初带有表格处理类软件中功能最强的宏语言,通过单击“工具”菜单中的“宏”,选择宏名来调用宏过程。随后发展至Visual Basic for Application专用版,可制作按钮、复选框、单选钮等控件,赋控件以宏名,单击控件运行宏,事件驱动方式就Click(单击)一种。新近推出的Office97套件中的Excel97,在“工具”菜单中选择“宏”后,就会发现增加了“Visual Basic编辑器”功能。运用这个新增功能,就完全与Visual Basic编程无异了。在菜单栏上单击鼠标右键,选择弹出式菜单中的“控件工具箱”,在“控件工具箱”工具条上,单击待添加的控件按钮,在工作表中将控件拖曳到所需位置和大小,单击鼠标右键选中“属性”设置控件属性后,双击控件就会出现Visual Basic编辑器。选择该控件的一个事件如Click或Change,编写程序。在工作表中操作该控件,如鼠标单击、键入字符等,则触发相应事件,执行相应程序。笔者在Excel97平台,采用Visual Basic应用程序版开发了一套“通用报表分析系统”。该系统用于拥有众多子公司的母公司的每月财务报表合并汇总。所有子公司的统计报表如资产负债表、损益表是由FoxBase编制的财务软件生成的dbf文件,取名为ATV001xx.dbf----xx月份资产负债表,ATV002xx.dbf----xx月份损益表等。一个子公司的所有dbf文件放在一个单独的目录中,如C:\T\palm1,C:\T\palm2等。母公司每月份生成的汇总报表为TTTyymm.xls(yy----年份,mm----月份),它有“资产负债表”、“损益表”等若干工作表组成。每张工作表是由所有子公司相应的dbf文件的相应项目的数据相加而成。只要将dbf文件逐一转化到TTTyymm.xls中去,很容易利用Excel的公式设置功能生成母公司的每张汇总报表。这套系统的关键在于如何将所有dbf文件转换到同一个Excel工作簿中。直接通过“文件”菜单中的“打开”项, 选择文件类型为dBase文件(*.dbf), 可将dbf文件转换到Excel工作簿中,但这工作簿只存转换而来的一张工作表,其他表都自动关闭了。另外,通过“工具”菜单中的“向导”,选择“文件转换”后, 只是将一系列dbf文件转换为一系列xls文件而已。于是采用建立ODBC数据源获取外部数据的办法, 将dbf文件逐一转换到一个Excel工作簿内, 且用Visual Basic for Application将转换过程自动化。只要按一下图1中的“生成报表”按钮, 就能完成所有dbf 文件的转换, 且利用Excel公式自动计算功能完成所有报表的汇总计算。按“显示报表”按钮,选择表名,可以浏览报表数据。具体的方法是:一、 建立ODBC数据源(1) 打开“数据”菜单, 选择“获取外部数据”, 然后单击“新建查询”;(2) 在“选择数据源”对话框中, 双击“&新数据源&”;(3) 出现“创建新数据源”对话框,输入数据源名称, 选择驱动程序如Microsoft dBase Driver(*.dbf), 单击“连接”;(4) 在“ODBC dBase安装”对话框中, 单击“使用当前工作目录”前的复选框, 去掉缺省( , 单击“选定目录(s)”, 选择子公司存放dbf文件的目录如C:\T\palm1, 连按“确定”;(5) 当出现Microsoft Quary对话框时, 单击“关闭”, 退出。不要理会出现的警示信息,因为此时只需建立数据源, 并不需要用Microsoft Query查询数据;(6) 重复上述步骤, 在(4)中改换另一家子公司的目录, 就为另一家子公司建立一个数据源。必须建立所有子公司的数据源。二、手动获取外部数据(1) 单击“数据”,选取“获取外部数据”,单击“新建查询”;(2) 出现“选取数据源”对话框,点中“使用查询向导创建/ 编辑查询”前的复选框,然后双击数据源名,如palm1;(3) 在“查询向导——选择列”对话框中选择一个查询表名,单击 & 键,“查询中用到的列”框内会出现表中所有列名,单击“下一步”;(4) 出现“查询向导——过滤数据”,单击“下一步”;(5) 出现“查询向导——排序顺序”,单击“下一步”;(6) 出现“查询向导——完成”,点中“将数据返回Microsoft Excel”前的单选钮,单击“完成”;(7) 出现“将外部数据返回到Excel”对话框,选中“新建工作表”,按“确定”;(8) 在建立查询的工作簿内新建工作表,并放入转换好的数据。这样就将一个 dbf 文件转换好了。(9)重复上述过程,所有子公司的dbf文件转换到同一个工作簿中。三、 使用VB实现Excel自动获取外部数据(1) 进行手动获取外部数据(1)步骤前,单击“工具”菜单中的“宏”,选择“录制新宏”,在“宏名”的编辑框中键入宏名dbftoxls,按“确定”键;(2) 完成手动获取外部数据(1)-(8)步骤;(3) 单击“工具”菜单中的“宏”,选择“停止录制”。这样就将获取外部数据的过程记录为宏。(4) 编辑dbftoxls宏,加以修改,使它作为Visual Basic模块表中的一个子程序,并设置调用参数。提供的程序如下:`设置初值Const apppath = "c:\my documents\palmxls\"Const modulefile = apppath + "module.xls"Const staticspre = "TTT"Const dbfpre = "ATV00"`调用dbftoxls的模块Private Sub Cmdgeneratetable_Click()Dim staticsfile As StringDim s1 As StringDim s2 As StringDim s3 As StringDim idyes As IntegerDim dbfstring As StringOn Error GoTo errhandler1idyes = 6s1 = txtyear.Texts1 = Mid(s1, 3, 2)s2 = txtmonth.TextIf Len(s2) = 1 Thens2 = "0" + s2End Ifstaticsfile = apppath + staticspre + s1 + s2 + ".xls"If FileLen(staticsfile) & 0 Thenchoice = MsgBox("该年月报表已存在,是否重新生成?", vbYesNo + vbExclamation + vbDefaultButton1, "")If choice = idyes ThenWorkbooks.Open FileName:=staticsfileFor i = 0 To companynum - 1For j = 0 To tablenum - 1dbfstring = dbfpre + Trim(Str$(j + 1)) + s2sqlstring = sqlstringfunc(dbfstring, fieldlist(), tablefieldnum(j))Call dbftoxls(s(i, j), sqlstring)Next jNext iActiveWorkbook.SaveActiveWorkbook.CloseEnd IfEnd IfExit Suberrhandler1:Select Case ErrCase 53Workbooks.Open FileName:=modulefiles3 = s1 + "年" + s2 + "月"Sheets("资产负债表").Range("e4").FormulaR1C1 = "'" + s3ActiveWorkbook.SaveAs FileName:=staticsfile, FileFormat _:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _False, CreateBackup:=FalseFor i = 0 To companynum - 1For j = 0 To tablenum - 1dbfstring = dbfpre + Trim(Str$(j + 1)) + s2sqlstring = sqlstringfunc(dbfstring, fieldlist(), tablefieldnum(j))Call dbftoxls(s(i, j), sqlstring)Next jNext iActiveWorkbook.SaveActiveWorkbook.CloseEnd SelectEnd Sub`dbftoxls子程序Sub dbftoxls(activesheetname, sqlstring)Sheets(activesheetname).ActivateCells.SelectSelection.ClearRange("a1").SelectWith ActiveSheet.QueryTables.Add(Connection:=Array(Array( _"ODBC;CollatingSequence=ASCII;DBQ=C:\T\palm1;DefaultDir=C:\T\palm1;Deleted=1;Driver={Microsoft dBase Driver (*.dbf)};DriverId=533;FIL"), Array( _"=dBase III;ImplicitCommitSync=YMaxBufferSize=512;MaxScanRows=8;PageTimeout=600;SafeTransactions=0;Statistics=0;Threads=3;Use" _), Array("rCommitSync=Y")), Destination:=Range("A1")).Sql = Array( sqlstring).FieldNames = True.RefreshStyle = xlInsertDeleteCells.RowNumbers = False.FillAdjacentFormulas = False.RefreshOnFileOpen = False.HasAutoFormat = True.BackgroundQuery = True.TablesOnlyFromHTML = True.Refresh BackgroundQuery:=False.SavePassword = True.SaveData = TrueEnd WithEnd Subvb 判断 已打开的EXCEL表格 是否被关闭悬赏分:15 - 提问时间 10:09 问题为何被关闭一个FORM中& 有按钮及TEXT若干其中一个按钮可以调用EXCEL要求 VB能自动判断1、当EXCEL被打开后& 该FORM上 所有控件的Endabled=False2、当EXCEL被各种原因关闭后& 该FORM上 所有控件的Endabled=True提问者: awpawpak47 - 魔法学徒 一级答复&&& 共 1 条检举你可以在打开Excel后加入代码,让控件Endabled=False ,再操作完后,释放Excel后再将控件Endabled=True比如:Dim objExcel As Excel.ApplicationDim objWorkBook As Excel.WorkbookSet objExcel = CreateObject("Excel.Application")Set objWorkBook = objExcel.Workbooks.Open("d:\1.xls")objExcel.Visible = False'设置活动工作表Dim objSheet As Excel.WorksheetSet objSheet = objExcel.Worksheets("sheet1")Command2.Endabled=False '等等objSheet.Cells(2, 1) = "mather"& '中间操作objWorkBook.SaveobjWorkBook.Close
来自:&&&《》
更多精彩,关注微信号:360doc
馆友评论(0)
您好,请&&或者&&后再进行评论
合作登录:}

我要回帖

更多关于 网页自动点击按钮代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信