Delphi 与 Word_VBA
'插入表格
Sub setTable()
Set myRange = ActiveDocument.Range(Start:=2, End:=2)
ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4
End Sub
'取得Word常规字符串
Sub getText()
Set myRange = ActiveDocument.Range(Start:=0, End:=4)
MsgBox myRange.Text
End Sub
'取得Word 表格中的数据
Sub getTableCellText()
Dim s
For i = 1 To ActiveDocument.Tables.Count
For iRow = 1 To ActiveDocument.Tables(i).Rows.Count
For icol = 1 To ActiveDocument.Tables(i).Columns.Count
Set myCell = ActiveDocument.Tables(i).Cell(Row:=iRow, Column:=icol)
s = s & Mid(myCell.Range.Text, 1, Len(myCell.Range.Text) - 2)
Next icol
Next iRow
Next i
MsgBox s
End Sub
Cell的属性RowIndex和ColIndex来取得某格单元格在表中的行列号
========================== Delphi ===================================
WordApp: TWordApplication;
WordDoc: TWordDocument;
DocInx,oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat: OleVariant;
myRange:Range;
myCell:Cell;
myRow:Row; myCol:Column;
if not Assigned(WordApp) then // ===== 创建对象 =====
begin
WordApp:= TWordApplication.Create(nil);
WordApp.Visible := false;
end;
if not Assigned(WordDoc) then
begin
WordDoc:= TWordDocument.Create(nil);
end;
DocInx:=1;
oFileName := InFile;
oReadOnly:=true;
CfCversions := EmptyParam;
AddToRctFiles:= EmptyParam;
PswDocument:= EmptyParam;
PswTemplate:= EmptyParam;
oRevert:= EmptyParam;
WPswDocument:= EmptyParam;
WPswTemplate:= EmptyParam;
oFormat:= EmptyParam; // ===== 打开文件 =====
WordApp.Documents.open(oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat);
WordDoc.ConnectTo(WordApp.Documents.Item(DocInx)); // ===== 关联文件 =====
//取整个文本的字符内容,包含表格
s := WordDoc.Range.text;
//取 1 -- 4 位的字符 ,包含表格
myRange:=WordDoc.Range;
myRange.Start:=0;
myRange.End_ :=4;
//方法(1)==> 规则表
For i := 1 To WordDoc.Tables.Count do
begin
For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do //第 i 个表 iRow行
begin
For icol := 1 To WordDoc.Tables.Item(i).Columns.Count do //第 iCol列
begin
myCell:=WordDoc.Tables.Item(i).Cell(iRow,icol);
memo1.Lines.add(myCell.Range.Text);
end;
end;
end;
//方法(2)==> 不规则表:只有横向合并时
For i := 1 To WordDoc.Tables.Count do //第 i 个表
begin
For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
&nbs
Delphi 与 Word_VBA第2部分:
p; begin
myRow:=WordDoc.Tables.Item(i).Rows.Item(iRow); //第 iRow 行
For icol := 1 To myRow.Cells.Count do //第 iCol列
begin
myCell:= myRow.Cells.Item(iCol) ;
memo1.Lines.add(myCell.Range.Text);
end;
end;
end;
//方法(3)==> 不规则:横向、纵向合并时
For i := 1 To WordDoc.Tables.Count do
begin
for j := 1 To WordDoc.Tables.Item(i).Range.Cells.Count do
begin
myCell := WordDoc.Tables.Item(i).Range.Cells.Item(j);
memo1.Lines.add(myCell.Range.Text);
end;
end;
//合并第一、二列
iStart:=WordDoc.Tables.Item(i).Cell(1,1).Range.Start;
myCol:= WordDoc.Tables.Item(i).Columns.Item(2);
iEnd:=myCol.Cells.Item(myCol.Cells.Count).Range.End_;
myRange:=WordDoc.Range;
myRange.Start:=iStart;
myRange.End_ :=iEnd;
myRange.Cells.Merge;
if Assigned(WordDoc) then // ===== 关闭文件 =====
begin
WordDoc.Close;
WordDoc.Disconnect;
WordDoc.Destroy;
WordDoc := nil;
end;
if Assigned(WordApp) then // ===== 关闭Word =====
begin
WordApp.Quit;
WordApp.Disconnect;
WordApp.Destroy;
WordApp := nil;
end;
/////////////////////////////
For i := 1 To WordDoc.Tables.Count do //第 i 个表
begin
For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
for iCol:=1 to WordDoc.Tables.Item(i).Columns.Count do
myCell:=WordDoc.Tables.Item(i).Cell(iRow,iCol); //取[iRow,iCol]列值
end;
Delphi 与 Word_VBA的更多相关文章
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [Delphi] Delphi版本号对照
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...
- delphi tidhttp 超时设置无效的解决方法
现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...
- Delphi Code Editor 之 编辑器选项
Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...
- Delphi使用ADO进行数据库编程
Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...
- 怎么使用Delphi获取当前的时间,精确到毫秒
先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...
- Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...
随机推荐
- centos7 下安装mongodb指南;
1.下载:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.1.tgz; 2.解压缩; 3.文件存储在mongodb文件 ...
- @1-2初识Python爬虫
初识Python爬虫 Python爬虫(入门+进阶) DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...
- jquery ajax 全局事件
jquery的ajax方法的全部全局事件:(不管是$.ajax().$.get().$.load().$.getJSON()等都会默认触发全局事件) ajaxStart:ajax请求开始前 ajaxS ...
- 【Apache】Apache服务的安装(一)
Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行 ...
- hadoop web管理界面不能打开问题
centos 7 安装好hadoop的,hadoop和yarn都正常启动,但是yarn的web界面(8088),hdfs的web界面(50070)都不能打开,防火墙是处于关闭状态. 修改默认启动级别, ...
- 2018.11.09 codeforces487E. Tourists(tarjan+树链剖分)
传送门 先把边双连通分量用圆方树一样的方法缩点,然后把新建的树树剖维护. 注意对于边双连通分量需要维护动态最小值,可以用multisetmultisetmultiset. 代码: #include&l ...
- FontAwesome 4.7.0 中完整的675个图标样式CSS参考
FontAwesome 4.7.0 中完整的675个图标样式CSS参考 用法:首先引入CSS文件:<link href="https://maxcdn.bootstrapcdn.com ...
- openstack的Host Aggregates和Availability Zones
1.关系 Availability Zones 通常是对 computes 节点上的资源在小的区域内进行逻辑上的分组和隔离.例如在同一个数据中心,我们可以将 Availability Zones 规划 ...
- Typecho 独立页面 添加自定义模板
1.首先在主题文件夹新建一个 ***.php 文件 编写代码 <?php /** * _主题命名 * * @package custom * */$this->need('header.p ...
- java se的那些细节
局部变量:方法体内或语句块内,不能有修饰符 成员变量:与类的对象共存,可以有修饰符 类属性:与类共存,可以有修饰符 一.局部变量:必须先赋值,才能使用,如果不赋初值,则会报错,即没有默认的始使值,而基 ...