Word问题,大家都来看看。(300分)

  • 主题发起人 主题发起人 woyaoying
  • 开始时间 开始时间
W

woyaoying

Unregistered / Unconfirmed
GUEST, unregistred user!
对于Word在delphi里控制,各位谁有资料可否发给我?
cx@sepco3.com,100M邮箱不怕文件大,也可以用QQ传给我,我是会员,MyQQ:130888116,验证前用Delphi即可。
具体解决问题,word中如果我给一个参数,可以画圆,可以嵌入CAD图像,可以控制分栏,可以重复打印表头、表尾等等。任何能通过手动操作word的,全部用Delphi能实现。现在这里谢谢给我传给我资料。
 
请看:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517
 
通过oleContainer不行吗?
另外,你通过本论坛的全文检索会找到很多
 
你说“任何能通过手动操作word的,全部用Delphi能实现。现在这里谢谢给我传给我资料。 ”
建议你直接在delphi里面打开word文件,让word弹出来算了,这样你直接就用word操作了。

 
呵呵~~
那样我用问你们吗?
 
是潍坊的同志吗?我做过不少word的玩意儿,有什么问题可以交流一下。
 
好~你怎么知道我是潍坊的?
 
我也是潍坊的,前两天见到你的一个帖子知道的
 
加QQ聊聊~~
 
只有msn没有qq,你又富裕的,给我一个也行啊,
现在没有免费的了,又不愿意去偷......
 
最简单,也是最实用的方式,就是创建Word的OLE对象,如下:
WordOLE := CreateOleObject('Word.Application');
然后,然后打开Word录制宏,进行想进行的操作,操作完了停止录宏,
看看您刚才录制的VBA的代码,然后改写成Dephi的语法对Word的OLE对象
进行操作就OK了!
 
这么长时间怎么人这么少?
问题太简单了吗?
300分没人要啊~~
这年头人都富了~~
 
//================== Word_VBA 代码 ====================//
sub inWord()
Dim myTable As Table
Dim myBox, myPict, myShape As Shape

'画第一个矩形框
Set myBox = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=90, Top:=70, Width:=414, Height:=200)

'画一条竖线
Set myLine = ActiveDocument.Shapes.AddLine(255, 70, 255, 270)

'画第一幅图
Set myPict = ActiveDocument.Shapes.AddPicture("D:/test/test/load_jpg1/photo/108259.jpg", _
LinkToFile:=False, SaveWithDocument:=True, Left:=180, Top:=80, Width:=65, Height:=80)

'画第二幅图
Set myPict = ActiveDocument.Shapes.AddPicture("D:/test/test/load_jpg1/photo/108259.jpg", _
LinkToFile:=False, SaveWithDocument:=True, Left:=262, Top:=80, Width:=65, Height:=80)

'姓名
Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=198, Width:=126, Height:=18)
myShape.Line.Visible = msoFalse
myShape.TextFrame.TextRange.Text = "姓名:新之助"

'年龄
Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=225, Width:=126, Height:=18)
myShape.Line.Visible = msoFalse
myShape.TextFrame.TextRange.Text = "年龄:12"

'个人信息
Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=351, Top:=90, Width:=126, Height:=99)
myShape.Line.Visible = msoFalse
myShape.TextFrame.TextRange.Text = "个人信息"

'文本框中添加表格
Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=288, Top:=198, Width:=189, Height:=63)
myShape.Line.Visible = msoFalse

Set myTable = ActiveDocument.Tables.Add(Range:=myShape.TextFrame.TextRange, NumRows:=3, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed)
myTable.Cell(1, 1).Range.Text = "体重"
myTable.Cell(1, 2).Range.Text = "40kg"
myTable.Cell(2, 1).Range.Text = "身高"
myTable.Cell(2, 2).Range.Text = "120cm"
myTable.Cell(3, 1).Range.Text = "坐高"
myTable.Cell(3, 2).Range.Text = "65cm"
end sub
//================== Delphi代码 ====================//
procedure inDelphi;
var
WordApp,WordDoc,WordTable,wordShape:OleVariant; // se:Selection;
filename:string;
begin
SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName)+'out_file';
SaveDialog1.Execute;
self.Refresh;
filename:=savedialog1.FileName;
if length(filename)=0 then
begin
application.MessageBox(' 没有选择统计文件的存储位置,不能保存统计的数据! ','提示框',mb_ok);
exit;
end;
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
WordDoc:=WordApp.Documents.Add;
try

//画第一个矩形框
worddoc.SHAPES.AddTextbox(Orientation:=1, Left:=90, Top:=70, Width:=414, Height:=200);
//画一条竖线
worddoc.Shapes.AddLine(255, 70, 255,270);
//画第一幅图
worddoc.SHAPES.addpicture(ExtractFilePath(Application.ExeName)+'photo/108259.jpg',
LinkToFile:=False, SaveWithDocument:=True, Left:=180, Top:=80, Width:=65, Height:=80);
//画第二幅图
worddoc.SHAPES.addpicture(ExtractFilePath(Application.ExeName)+'photo/108259.jpg',
LinkToFile:=False, SaveWithDocument:=True, Left:=262, Top:=80, Width:=65, Height:=80);

//画 姓名 框
wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=198, Width:=126, Height:=18);
wordShape.Line.Visible := false;
wordShape.TextFrame.TextRange.Text := '姓名:新之助';
//年龄 框
wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=225, Width:=126, Height:=18);//.Select;
wordShape.Line.Visible := false;
wordShape.TextFrame.TextRange.Text := '年龄:12';
//个人信息 框
wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=351, Top:=90, Width:=126, Height:=99);//.Select;
wordShape.Line.Visible := false;
wordShape.TextFrame.TextRange.Text := '个人信息';
//文本框中添加表格
wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=288, Top:=198, Width:=189, Height:=63);//.Select;
wordShape.Line.Visible := false;
WordTable := worddoc.Tables.Add(Range:=wordShape.TextFrame.TextRange, NumRows:=3, NumColumns:=2,
DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed);
WordTable.Cell(1, 1).Range.Text := '体重';
WordTable.Cell(1, 2).Range.Text := '40kg';
WordTable.Cell(2, 1).Range.Text := '身高';
WordTable.Cell(2, 2).Range.Text := '120cm';
WordTable.Cell(3, 1).Range.Text := '坐高';
WordTable.Cell(3, 2).Range.Text := '65cm';

WordDoc.saveas(filename);
application.MessageBox(' 输出成功! ','提示框',mb_ok);

finally
WordDoc.Saved:=true;
WordDoc.Close;
WordApp.Quit;
end;

end;
 
//取得Word 表格中的数据
procedure getWordCellStr;
var WordApp: TWordApplication;
WordDoc: TWordDocument;
DocInx,oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat: OleVariant;
i,iRow,iCol:integer;
myCell:Cell;
myRow:Row;
begin
memo1.Lines.Clear ;

// ===== 创建对象 =====
if not Assigned(WordApp) then
begin
WordApp:= TWordApplication.Create(nil);
WordApp.Visible := false;
end;
if not Assigned(WordDoc) then
WordDoc:= TWordDocument.Create(nil);
try
DocInx:=1;
oFileName := 'd:/test.doc';
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));

//方法(1)==> 规则表
For i := 1 To WordDoc.Tables.Count do //第 i 个表
begin //第 iRow 行
For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
begin //第 iCol列
For icol := 1 To WordDoc.Tables.Item(i).Columns.Count do
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
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 //第 i 个表
begin //第 j 个Cell
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;

finally
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;
end;
end;
 
到WORD的VBA中自己漫漫探索吧!!1
 
帮你提前,呵呵
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1970639
 
多人接受答案了。
 
后退
顶部