深圳门窗人 發表於 2023-3-20 19:13:00

DELPHI中EXCEL操作

<h1 align="left">DELPHI中EXCEL组件的使用方法:</h1>
<h2 align="left">(一) 使用动态创建的方法</h2>
<p align="left"><br data-filtered="filtered">首先创建 Excel 对象,使用ComObj:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; var ExcelApp: Variant;<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp := CreateOleObject( 'Excel.Application' );<br data-filtered="filtered">1) 显示当前窗口:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.Visible := True;<br data-filtered="filtered">2) 更改 Excel 标题栏:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.Caption := '应用程序调用 Microsoft Excel';<br data-filtered="filtered">3) 添加新工作簿:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.WorkBooks.Add;<br data-filtered="filtered">4) 打开已存在的工作簿:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );<br data-filtered="filtered">5) 设置第2个工作表为活动工作表:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.WorkSheets.Activate;<br data-filtered="filtered">&nbsp;&nbsp; 或<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.WorksSheets[ 'Sheet2' ].Activate;<br data-filtered="filtered">6) 给单元格赋值:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.Cells.Value := '第一行第四列';<br data-filtered="filtered">7) 设置指定列的宽度(单位:字符个数),以第一列为例:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Columns.ColumnsWidth := 5;<br data-filtered="filtered">8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Rows.RowHeight := 1/0.035; // 1厘米<br data-filtered="filtered">9) 在第8行之前插入分页符:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp;ExcelApp.WorkSheets.Rows.PageBreak := 1;<br data-filtered="filtered">10) 在第8列之前删除分页符:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp;ExcelApp.ActiveSheet.Columns.PageBreak := 0;<br data-filtered="filtered">11) 指定边框线宽度:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders.Weight := 3;1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<br data-filtered="filtered">12) 清除第一行第四列单元格公式:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Cells.ClearContents;<br data-filtered="filtered">13) 设置第一行字体属性:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Rows.Font.Name := '隶书';<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Rows.Font.Color := clBlue;<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Rows.Font.Bold := True;<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Rows.Font.UnderLine := True;<br data-filtered="filtered">14) 进行页面设置:<br data-filtered="filtered">&nbsp; a.页眉:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';<br data-filtered="filtered">&nbsp; b.页脚:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&amp;P页';<br data-filtered="filtered">&nbsp; c.页眉到顶端边距2cm:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<br data-filtered="filtered">&nbsp; d.页脚到底端边距3cm:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<br data-filtered="filtered">&nbsp; e.顶边距2cm:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;<br data-filtered="filtered">&nbsp; f.底边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<br data-filtered="filtered">&nbsp;g.左边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<br data-filtered="filtered">&nbsp; h.右边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;<br data-filtered="filtered">&nbsp; i.页面水平居中:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.CenterHorizontally :=2/0.035;<br data-filtered="filtered">&nbsp; j.页面垂直居中:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<br data-filtered="filtered">&nbsp; k.打印单元格网线:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;<br data-filtered="filtered">15) 拷贝操作:<br data-filtered="filtered">&nbsp; a.拷贝整个工作表:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Used.Range.Copy;<br data-filtered="filtered">&nbsp; b.拷贝指定区域:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;<br data-filtered="filtered">&nbsp; c.从A1位置开始粘贴:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;<br data-filtered="filtered">&nbsp; d.从文件尾部开始粘贴:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.Range.PasteSpecial;<br data-filtered="filtered">16) 插入一行或一列:<br data-filtered="filtered">&nbsp; a. ExcelApp.ActiveSheet.Rows.Insert;<br data-filtered="filtered">&nbsp; b. ExcelApp.ActiveSheet.Columns.Insert;<br data-filtered="filtered">17) 删除一行或一列:<br data-filtered="filtered">&nbsp; a. ExcelApp.ActiveSheet.Rows.Delete;<br data-filtered="filtered">&nbsp; b. ExcelApp.ActiveSheet.Columns.Delete;<br data-filtered="filtered">18) 打印预览工作表:<br data-filtered="filtered">&nbsp; ExcelApp.ActiveSheet.PrintPreview;<br data-filtered="filtered">19) 打印输出工作表:<br data-filtered="filtered">&nbsp; ExcelApp.ActiveSheet.PrintOut;<br data-filtered="filtered">20) 工作表保存:<br data-filtered="filtered">&nbsp;&nbsp; if not ExcelApp.ActiveWorkBook.Saved then<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveSheet.PrintPreview;<br data-filtered="filtered">21) 工作表另存为:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );<br data-filtered="filtered">22) 放弃存盘:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.ActiveWorkBook.Saved := True;<br data-filtered="filtered">23) 关闭工作簿:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.WorkBooks.Close;<br data-filtered="filtered">24) 退出 Excel:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApp.Quit;</p>
<p align="left">25)设置换行</p>
<p align="left">&nbsp;&nbsp;&nbsp;ExcelApp.ActiveSheet.WrapText := True</p>
<h2 align="left">(二) 使用Delphi 控件方法</h2>
<p align="left"><br data-filtered="filtered">&nbsp;&nbsp;&nbsp; 在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。<br data-filtered="filtered">1)打开Excel<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.Connect;<br data-filtered="filtered">2)&nbsp;显示当前窗口:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.Visible:=True;<br data-filtered="filtered">3)&nbsp;更改&nbsp;Excel&nbsp;标题栏:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.Caption := '应用程序调用&nbsp;Microsoft Excel';<br data-filtered="filtered">4)&nbsp;添加新工作簿:<br data-filtered="filtered">&nbsp;&nbsp; ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));<br data-filtered="filtered">5)&nbsp;添加新工作表:<br data-filtered="filtered">&nbsp;&nbsp;var Temp_Worksheet: _WorkSheet;<br data-filtered="filtered">&nbsp;&nbsp;begin<br data-filtered="filtered">&nbsp;&nbsp; Temp_Worksheet:=ExcelWorkbook1.<br data-filtered="filtered">&nbsp;&nbsp; WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)&nbsp;as _WorkSheet;<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);<br data-filtered="filtered">&nbsp; End;<br data-filtered="filtered"><br data-filtered="filtered">6)&nbsp;打开已存在的工作簿:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApplication1.Workbooks.Open (c:\a.xls,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,</p>
<p align="left">EmptyParam,EmptyParam,EmptyParam,0)<br data-filtered="filtered">7) 设置第2个工作表为活动工作表:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.WorkSheets.Activate; 或<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;<br data-filtered="filtered">8) 给单元格赋值:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.Cells.Value := '第一行第四列';<br data-filtered="filtered">9) 设置指定列的宽度(单位:字符个数),以第一列为例:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Columns.ColumnsWidth := 5;<br data-filtered="filtered">10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Rows.RowHeight := 1/0.035; // 1厘米<br data-filtered="filtered">11) 在第8行之前插入分页符:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.WorkSheets.Rows.PageBreak := 1;<br data-filtered="filtered">12) 在第8列之前删除分页符:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Columns.PageBreak := 0;<br data-filtered="filtered">13) 指定边框线宽度:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Range[ 'B3:D4'].Borders.Weight := 3;1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<br data-filtered="filtered">14) 清除第一行第四列单元格公式:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Cells.ClearContents;<br data-filtered="filtered">15) 设置第一行字体属性:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Rows.Font.Name := '隶书';<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Rows.Font.Color := clBlue;<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Rows.Font.Bold := True;<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Rows.Font.UnderLine := True;<br data-filtered="filtered">16) 进行页面设置:<br data-filtered="filtered">a.页眉:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';<br data-filtered="filtered">b.页脚:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&amp;P页';<br data-filtered="filtered">c.页眉到顶端边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin :=2/0.035;<br data-filtered="filtered">d.页脚到底端边距3cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin :=3/0.035;<br data-filtered="filtered">e.顶边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.TopMargin :=2/0.035;<br data-filtered="filtered">f.底边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.BottomMargin :=2/0.035;<br data-filtered="filtered">g.左边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.LeftMargin :=2/0.035;<br data-filtered="filtered">h.右边距2cm:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.RightMargin :=2/0.035;<br data-filtered="filtered">i.页面水平居中:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally:= 2/0.035;<br data-filtered="filtered">j.页面垂直居中:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.CenterVertically :=2/0.035;<br data-filtered="filtered">k.打印单元格网线:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines :=True;<br data-filtered="filtered">17) 拷贝操作:<br data-filtered="filtered">a.拷贝整个工作表:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Used.Range.Copy;<br data-filtered="filtered">b.拷贝指定区域:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;<br data-filtered="filtered">c.从A1位置开始粘贴:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp;ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;<br data-filtered="filtered">d.从文件尾部开始粘贴:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.Range.PasteSpecial;<br data-filtered="filtered">18) 插入一行或一列:<br data-filtered="filtered">&nbsp;a. ExcelApplication1.ActiveSheet.Rows.Insert;<br data-filtered="filtered">&nbsp;b. ExcelApplication1.ActiveSheet.Columns.Insert;<br data-filtered="filtered">19) 删除一行或一列:<br data-filtered="filtered">&nbsp;a. ExcelApplication1.ActiveSheet.Rows.Delete;<br data-filtered="filtered">&nbsp;b. ExcelApplication1.ActiveSheet.Columns.Delete;<br data-filtered="filtered">20) 打印预览工作表:<br data-filtered="filtered">&nbsp;&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PrintPreview;<br data-filtered="filtered">21) 打印输出工作表:<br data-filtered="filtered">&nbsp;&nbsp; ExcelApplication1.ActiveSheet.PrintOut;<br data-filtered="filtered">22) 工作表保存:<br data-filtered="filtered">&nbsp; if not ExcelApplication1.ActiveWorkBook.Saved then<br data-filtered="filtered">&nbsp; ExcelApplication1.ActiveSheet.PrintPreview;<br data-filtered="filtered">23) 工作表另存为:<br data-filtered="filtered">&nbsp; ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );<br data-filtered="filtered">24) 放弃存盘:<br data-filtered="filtered">&nbsp; ExcelApplication1.ActiveWorkBook.Saved := True;<br data-filtered="filtered">25) 关闭工作簿:<br data-filtered="filtered">&nbsp; ExcelApplication1.WorkBooks.Close;<br data-filtered="filtered">26) 退出 Excel:<br data-filtered="filtered">&nbsp; ExcelApplication1.Quit;<br data-filtered="filtered">&nbsp; ExcelApplication1.Disconnect;</p>
<h2 align="left"><br data-filtered="filtered">(三) 使用Delphi 控制Excle二维图</h2>
<p align="left"><br data-filtered="filtered">在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet<br data-filtered="filtered">var asheet1,achart, range:variant;<br data-filtered="filtered">1)选择当第一个工作薄第一个工作表<br data-filtered="filtered">&nbsp;&nbsp; asheet1:=ExcelApplication1.Workbooks.Worksheets;<br data-filtered="filtered">2)增加一个二维图<br data-filtered="filtered">&nbsp; achart:=asheet1.chartobjects.add(100,100,200,200);<br data-filtered="filtered">3)选择二维图的形态<br data-filtered="filtered">&nbsp; achart.chart.charttype:=4;<br data-filtered="filtered">4)给二维图赋值<br data-filtered="filtered">&nbsp; series:=achart.chart.seriescollection;<br data-filtered="filtered">&nbsp; range:=sheet1!r2c3:r3c9;<br data-filtered="filtered">&nbsp; series.add(range,true);<br data-filtered="filtered"><br data-filtered="filtered">5)加上二维图的标题<br data-filtered="filtered">&nbsp; achart.Chart.HasTitle:=True;<br data-filtered="filtered">&nbsp; achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ Delphi</p>
<p align="left">与Word之间的融合技术&nbsp;(0分)<br data-filtered="filtered">一、VBA代码含义<br data-filtered="filtered">Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文档处理的自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利用Word的特性,甚至使Word成为自己软件的一部分。Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的文档、计算机系统甚至网络,从最开始的Taiwan NO1宏病毒到现在的Melissa宏病毒,从最开始的简单的提示,耗尽系统资源到现在的乱发电子邮件,将个人的信息发送到网络上,甚至向硬盘的Autoexec.bat(自动批处理文件)中添加Deltree C: -y,破坏整个Windows系统。<br data-filtered="filtered">二、Word中内嵌的Com技术<br data-filtered="filtered">可以说Word是对Com技术支持最好的软件,这样说似乎是太极端了一点,但是Word提供的强大的编程接口技术却能够是我们通过程序控制Word的任何一部分。无论是文件的打开、存盘、打印还是文档中表格的自动绘制。通过编程软件,可以灵活的操纵word,这里只以Borland Delphi为例,进行</p>
<p align="left">详细描述:<br data-filtered="filtered">1、在Delphi中调用Word软件/文件的方法<br data-filtered="filtered">在Word中调用Word软件,归纳起来有三种方法:<br data-filtered="filtered">。通过Delphi的控件TOleContainer&nbsp;将Word嵌入<br data-filtered="filtered">a.使用Delphi提供的Servers控件调用Word,使用Word的属性<br data-filtered="filtered">b.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,利用Com技术编程<br data-filtered="filtered">c.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。<br data-filtered="filtered">2、对几种方法的难易程度的判别<br data-filtered="filtered">a.通过Delphi的控件TOleContainer&nbsp;将Word嵌入这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以将Word文档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它存在不可克服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。<br data-filtered="filtered">b.使用Delphi提供的Servers控件调用Word,使用Word的属性使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能够较好的实现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写的VBA宏代码)。且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译都不能通过。本方式启动的Word与Delphi程序分属两个窗体。此办法仅能作为一个参考。<br data-filtered="filtered">c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,利用Com技术编程利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦,优缺点与Servers控件相同。<br data-filtered="filtered">d.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。<br data-filtered="filtered">本办法是使用以CreateOleObjects方式调用Word,实际上还是Ole,但是这种方式能够真正做到完全控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。<br data-filtered="filtered">与Servers控件和com技术相比,本方法能够真正地使用Word的各种属性,和在VBA中编写自己的代码基本一样,可以缺省的代码也不需要使用。本方式启动的Word与Delphi程序分属两个窗体。缺点是使用本方法没有Delphi代码提示,所有异常处理均需要自己编写,可能编写时探索性知识比较多。<br data-filtered="filtered">三、Word宏编辑器<br data-filtered="filtered">Word能够真正地进行VBA代码的编辑,可以编写窗体、函数。<br data-filtered="filtered">进入Word宏编辑器的方法:工具-&gt;宏-&gt;VisualBasic编辑器,可进入Visual Basic编辑器界面。Word的Visual Basic编辑器界面和真正的Visual Basic编辑器基本相同,</p>
<p align="left">在此不再向详述。<br data-filtered="filtered">在VBA代码中,可以添加用户窗体、模块、类模块。用户窗体、模块、类模块的概念和Visual Basic完全相同。注释也与Visual Basic完全相同。可以将光标停留在窗体、模块的任何一个子程序上,直接按“F5”运行当前子程序。<br data-filtered="filtered">四、Word的宏的概述<br data-filtered="filtered">Word充分地将文档编辑和VB结合起来,真正地实现文档的自动化。使用Word编程,类似于使用Visual Basic,所不同的是,在Word中,能够直接运行某一个子程序,直接看见结果,Word的宏,只能解释运行,而Visual Basic,现在已经能够编写成真正的机器码,从代码的保护上来说,应该尽<br data-filtered="filtered">可能地减少Word的VBA代码数量,尤其是关键的代码。VBA宏,可分成四种:<br data-filtered="filtered">1、和命令名相同的宏<br data-filtered="filtered">如FileSave,FileOpen,如果在VBA代码中包含与Word同名的函数,则直接执行这些VBA代码,忽略Word本身的命令。<br data-filtered="filtered">2、&nbsp;Word内特定的宏<br data-filtered="filtered">这些宏包含AutoExec(启动&nbsp;Word&nbsp;或加载全局模板)、AutoNew(每次新建文档时)、AutoOpen(每次打开已有文档时)、AutoClose(每次关闭文档时),AutoExit(退出&nbsp;Word或卸载全局模板时)。如果VBA代码中含有这些名称的函数,则满足相应的条件,相应代码就自动执行。<br data-filtered="filtered">3、相应事件的VBA宏<br data-filtered="filtered">这些宏是由事件触发的宏,如Document_Close在文档关闭的时候触发事件,Document_New在新建文档的时候触发,Document_Open在打开文档的时候触发。<br data-filtered="filtered">4、独立的宏<br data-filtered="filtered">自己编写的VBA代码,即不属于上面几种情况的VBA代码,可以被其他VBA代码调用,更重要的是,可以被其他程序调用。这样,我们就可以屏弃Word自动执行的宏,通过Delphi直接调用相应宏来达到目的。<br data-filtered="filtered">五、Word命令宏的详细描述<br data-filtered="filtered">Word本身的命令函数包含很多,但是无论是word联机帮助还是MSDN帮助,都没有这方面的介绍,因此只能凭自己的实验取探索,初步探测的函数如下:<br data-filtered="filtered">宏名解释注释<br data-filtered="filtered">FileNew&nbsp;新建<br data-filtered="filtered">FileNewDefault&nbsp;新建空白文档<br data-filtered="filtered">FileSaveAs&nbsp;另存为<br data-filtered="filtered">FileOpen&nbsp;打开<br data-filtered="filtered">FileClose&nbsp;关闭<br data-filtered="filtered">FilePrint&nbsp;打印<br data-filtered="filtered">FilePrintPreview&nbsp;打印预览<br data-filtered="filtered">ToolsCustomize&nbsp;工具栏里面的自定义<br data-filtered="filtered">ToolsOptions&nbsp;工具选项<br data-filtered="filtered">ToolsRevisions&nbsp;突出显示修订<br data-filtered="filtered">ToolsReviewRevisions&nbsp;接受或拒绝修订<br data-filtered="filtered">ToolsRevisionMarksAccept&nbsp;接受修订<br data-filtered="filtered">ToolsRevisionMarksReject&nbsp;拒绝修订<br data-filtered="filtered">ToolsRevisionMarksToggle&nbsp;修订<br data-filtered="filtered">ToolsMacro&nbsp;宏<br data-filtered="filtered">ToolsRecordMacroToggle&nbsp;录制新宏<br data-filtered="filtered">ViewSecurity&nbsp;安全性<br data-filtered="filtered">ViewVBCode&nbsp;查看VB编辑器环境<br data-filtered="filtered">FileTemplates&nbsp;模板和可加载项<br data-filtered="filtered">ToolsProtectUnprotectDocument&nbsp;解除对文档的保护<br data-filtered="filtered">InsertHyperlink&nbsp;插入超级链接<br data-filtered="filtered">EditHyperlink&nbsp;编辑超级链接<br data-filtered="filtered">DeleteHyperlink&nbsp;删除超级链接<br data-filtered="filtered">EditLinks&nbsp;查看、删除链接<br data-filtered="filtered">EditPasteAsHyperlink&nbsp;粘贴超级链接<br data-filtered="filtered">FormatStyle&nbsp;样式<br data-filtered="filtered">EditBookMark&nbsp;书签<br data-filtered="filtered">yzhshi@263.net<br data-filtered="filtered">一、Delphi程序启动Word<br data-filtered="filtered">采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:<br data-filtered="filtered">首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word<br data-filtered="filtered">二、Delphi程序新建Word文稿<br data-filtered="filtered">格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)<br data-filtered="filtered">Template:使用模板的名称,<br data-filtered="filtered">NewTemplate:新建文档的类型,True表示为模板,False表示为文档<br data-filtered="filtered">DocumentType:文档类型,默认为空白文档<br data-filtered="filtered">Visible:打捞的窗口是否可见<br data-filtered="filtered">举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False);<br data-filtered="filtered">三、Delphi程序打开Word文稿<br data-filtered="filtered">格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,<br data-filtered="filtered">Format,Encoding,Visible)<br data-filtered="filtered">FileName:文档名(包含路径)<br data-filtered="filtered">Confirmconversions:是否显示文件转换对话框<br data-filtered="filtered">ReadOnly:是否以只读方式打开文档<br data-filtered="filtered">AddToRecentFiles:是否将文件添加到"文件"菜单底部的最近使用文件列</p>
<p align="left">表中<br data-filtered="filtered">PassWordDocument:打开此文档时所需要的密码<br data-filtered="filtered">PasswordTemplate:打开此模板时所需要的密码<br data-filtered="filtered">Revert:如果文档已经,是否重新打开文档<br data-filtered="filtered">WritePasswordDocument:保存对文档更改时所需要的密码<br data-filtered="filtered">WritePasswordTemplate:保存对模板进行更改时所需要的密码<br data-filtered="filtered">Format:打开文档时所需使用的文件转换器<br data-filtered="filtered">Encoding:所使用的文档代码页<br data-filtered="filtered">Visible:打开文档的窗口是否可见<br data-filtered="filtered">举例:<br data-filtered="filtered">Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly</p>
<p align="left">:=False,<br data-filtered="filtered">AddToRecentFiles:=False);<br data-filtered="filtered">四、Delphi程序保存Word文稿<br data-filtered="filtered">格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments,</p>
<p align="left">Password,<br data-filtered="filtered">AddToRecentFiles, WritePassword,</p>
<p align="left">ReadOnlyRecommended,<br data-filtered="filtered">EmbedTrueTypeFonts,</p>
<p align="left">SaveNativePictureFormat, SaveFormsData,<br data-filtered="filtered">SaveAsAOCELetter)<br data-filtered="filtered">FileName:文件名。默认为当前文件夹和文件名。<br data-filtered="filtered">FileFormat&nbsp;文档保存的格式。<br data-filtered="filtered">LockComments&nbsp;如果为&nbsp;True,则此文档只允许进行批注。<br data-filtered="filtered">Password&nbsp;打开文档时的口令。<br data-filtered="filtered">AddToRecentFiles&nbsp;如果为True,则将文档添至"文件"菜单中最近</p>
<p align="left">使用的文档列表中。<br data-filtered="filtered">WritePassword&nbsp;保存对文档的修改所需的</p>
<p>自己补充:</p>
<p>修改单元格格式:</p>
<p align="left">var</p>
<p align="left">&nbsp; strFormat:OleVariant;</p>
<p align="left">begin&nbsp;&nbsp;&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; strFormat:='@';&nbsp;&nbsp; //表示显示的是文本格式</p>
<p align="left">&nbsp;&nbsp;&nbsp; ExcelApp.cells.NumberFormatLocal:=strFormat;</p>
<p>end;</p>
<p>&nbsp;</p>
<p>设置EXCEL的单元格的格式为文本格式</p>
<p>ColumnRange.Columns.numberformatlocal:='@';</p>
<p>ExcelApplication1.ActiveSheet.Rows.numberformat:='@';</p>
<p>ExcelApp.Cells.numberformatlocal:='@';</p>
<p>excelworksheet1.Cells.Item.numberformatlocal:='@';</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/sixty-five/p/17237403.html
頁: [1]
查看完整版本: DELPHI中EXCEL操作