关于TWordApplication,急 急(100分)

  • 主题发起人 主题发起人 start_shu
  • 开始时间 开始时间
S

start_shu

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,好
我在编程序中遇到些小麻烦,清高手们解答
问题描述,
我在用TwordApplication时,当打开一个已有word文件,再后面加Table时,每次都加到文件
首,请问怎么控制Word文件的追加。十万火急,先谢了。
 
把光标移到后面不就可以了?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=786011
 
楼上的太快了

就是那样
 
前面的方法我以前试过,有时不太准确,还有没其他方法。
比如现在文档中只有一个Table,Table前没有文字、空格,
这时再加入talbe时,会替换以前的。

请多多指教。
 
我不知道你是怎么用的,我在Delphi6 + OfficeXP中试过,用
http://www.delphibbs.com/delphibbs/dispq.asp?lid=786011
中的GotoDocEnd函数没有问题,如果你觉得两个Table粘在一起的
话就加一个空行就是了.试验的Word文件新建后,插入了一个Table,然后保存.

// 打开文档
procedure TForm1.Button5Click(Sender: TObject);
begin
OpenDoc(WordApp,WordDoc,'e:/doc2.doc');
end;

// 在文档末尾添加一个Table
procedure TForm1.Button10Click(Sender: TObject);
var
DefaultTableBehavior,AutoFitBehavior : OleVariant;
begin
DefaultTableBehavior := wdWord9TableBehavior;
AutoFitBehavior := wdAutoFitFixed;

GotoDocEnd(WordApp);
WordApp.Selection.TypeParagraph;
WordDoc.Tables.Add(WordApp.Selection.Range ,5,2,DefaultTableBehavior,AutoFitBehavior);
end;

// Open Doc 函数
procedure OpenDoc(WrdApp: TWordApplication; var WrdDoc: TWordDocument; FileName: string);
var
FName, ConfirmConvert, ReadOnly, AddToRecentFile, PwdDoc, PwdTemp: OleVariant;
Revert, WritePwdDoc, WritePwdTemp, Format, Encoding, Visible: OleVariant;
begin
WrdApp.Connect;
WrdApp.Visible := True;

FName := FileName;
ConfirmConvert := EmptyParam;
ReadOnly := EmptyParam;
AddToRecentFile := EmptyParam;
PwdDoc := EmptyParam;
PwdTemp := EmptyParam;
Revert := EmptyParam;
WritePwdDoc := EmptyParam;
WritePwdTemp := EmptyParam;
Format := EmptyParam;
Encoding := EmptyParam;
Visible := EmptyParam;

WrdDoc.ConnectTo(WrdApp.Documents.Open(FName, ConfirmConvert, ReadOnly, AddToRecentFile, PwdDoc, PwdTemp,
Revert, WritePwdDoc, WritePwdTemp, Format, Encoding, Visible));
end;
 
谢谢, bluerain,我试过了,基本上满足,但仍有一些不明白,请赐教,不胜感激。
1。参数 WdUnit,wdCount wdExtend各为什么意思。
WdUnit中,WdScreen,WdLine分别代表什么。
2。如果我要往已存在的Word文档的表格中加数据,该怎么做?
 
1.
Unit Variant 类型,可选。
移动所选内容所根据的度量单位。可以是下列 WdUnits 常量之一:
wdLine、wdParagraph、wdWindow 或 wdScreen。默认值是 wdLine。
wdWindow 常量可用来移至活动窗口的顶部或底部。不管 Count 是大于 1
或小于 1, wdWindow 常量只移动一个单位。可使用 wdScreen 移动多屏.
其实就表示你移动的单位是什么,是一行一行移动(wdLine),还是一段
一段移动(wdParagraph),或者是一屏幕一屏幕移动(wdWindow),用中文表达
有时候不是很正确,你可以在Word中,录制一些宏理解一下这些单位的意义.
例如用键盘的Page Up,Page Down,用上下键,点击Word最右边的Brower按钮(就是
四个蓝蓝的点)
Count Variant 类型,可选。移动所选内容的距离单位。默认值是 1。

Extend Variant 类型,可选。可为 wdMove 或 wdExtend。
如果是 wdMove,则所选内容折叠到结束位置,并向下移动。
如果是 wdExtend,则所选内容向下扩展。默认值是 wdMove。

2.往已存在Word Table中加数据,要先选中Talbe,然后进行操作.
例如:
if WordDoc.Tables.Count > 0 then
begin
Tbl := WordDoc.Tables.Item(1);
for i := 1 to Tbl.Rows.Count do
for j := 1 to Tbl.Columns.Count do
begin
Tbl.Cell(i, j).Select;
WordApp.Selection.Text := stringgrid1.Cells[j, i-1];
end;
end;
不过这种办法的前提是你知道了Word中Table的顺序.你也可以用goto方法
取得table,也可以加一下标记.具体的办法看看office VBA的帮助.

这是我和一个网友的QQ记录,你可以看看
(2001-12-29 11:50:09) sunny
office Automation方面的资料主要是三个途径:
1.http://www.djpate.freeserve.co.uk/Automation.htm
一个十分棒的网站,可以作为入门和一般应用
2.安装完Office后(完全安装),有一些VBA**.chm的文件,
是关于VBA操作Office的资料,十分详尽.可以当作手册使用.
当然在Delphi中需要自己再改一下或者修整一下.
3.当然就是MSDN喽.
 
感谢:bluerain以后有问题,还要请教你,请不要怕麻烦
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部