问一个困扰我很久的问题! :)(100分)

  • 主题发起人 主题发起人 花园风味
  • 开始时间 开始时间

花园风味

Unregistered / Unconfirmed
GUEST, unregistred user!
我关于Word进行编程,启动时总会出错!说“被呼叫方拒绝接受呼叫”
!?!?!?
为什么?!?
不应该吧!?
我应该怎么做?
[?][?][?]
但是进程中有WINWORD.EXE时,开启就不会错(当然不会错!进程已经起来了!)
[:(][:(][:(]
那我怎么启动Word呢?!

 
我在使用olecontainer控件时,也遇到过这种问题,需要激活。
 
//那我怎么启动Word呢?!
WinExec('WinWord.exe', SW_Hide);

 
WordApplication1.Connect;
 
Delphi有自带的Demo,看一下那写源代码吧!你会发现很多问题跟本不用到这里问的!
program files/borland/delphi6/demo
 
only you:
你以为我是XX呀!?
我不会看Demo呀!?
[:(] Demo哪个你说!
我是的都有这个问题!?
 
我也遇到了同样的问题,我的代码在很多机器上都运行正常,可是有两台机器偏偏
“拒绝呼叫”,情况和"花园风味"的相同,还望各位大侠多多指教!
 
启动Word有两种方式,好像用Delphi的Server控件組比较安全些。
不用控件:
procedure TForm1.Button1Click(Sender: TObject);
var
V: OLEVariant;
vApp:Variant;
begin
procedure TForm1.Button1Click(Sender: TObject);
var
vDoc,vTab:variant;
StrTemplate:String;
i,j:Integer;
begin
try
try
Table1.First;
StrTemplate:=StrStarDir+'/Delphi报表.dot';
StrOutDoc:=StrStarDir+'/Delphi_Report.Doc';
if varType(vApp)=varEmpty then
vApp:=createoleobject('Word.Application');
vDoc:=vApp.Documents.Add(Template:=StrTemplate,NewTemplate:=False);end;
except
vApp.Quit;
vApp:=UnAssigned;
ShowMessage('Some Thing Wrong When Run Microsoft Word!');
end;
用TWordApplication控件:
var
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument,
WritePasswordTemplate, Format: OleVariant;
begin
WordApplication1.Connect;
WordApplication1.Visible := True;

FileName := 'c:/windows/script.doc';
ConfirmConversions := False;
ReadOnly := False;
AddToRecentFiles := True;
PasswordDocument := EmptyParam;
PasswordTemplate := EmptyParam;
Revert := False;
WritePasswordDocument := EmptyParam;
WritePasswordTemplate := EmptyParam;
Format := EmptyParam;
WordApplication1.Documents.Open(FileName, ConfirmConversions, ReadOnly,
AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format);
end;
 
我用的就是Server中的控件,来打开word文档,写了这样几句代码:
procedure TForm1.Button1Click(Sender: TObject);
var
Wordapplication1: Twordapplication;
begin
Wordapplication1:=Twordapplication.Create(self);
Wordapplication1.Connect;
......//打开word文档
end;
结果程序在很多机器上都运行正常,偏偏有两台机器运行时出现错误,在执行
Wordapplication1.Connect时提示“被呼叫方拒绝接受呼叫”,而且在第一次
点击Button1后,进程中就添加了WINWORD.EXE,第二次点击Button1,就能够正
常运行,打开指定的Word文档。关闭Word文档后,第三次点击Button1,又出错,
再点击,又能成功运行。
总之,要点击两次Button1才能打开Word文档。
为什么在其他很多机器上都不会出现这样的问题?我的确十分困惑,还望各位大
侠给小弟指点一二,不甚感激!

 
那两台机子装的Word版本与其他机子一样吗? 重装Word试试? 应该不是程序的问题,
可能机子的Word系统受损了吧?
 
那两台机子装的Word版本一台是2000,另一台是xp,在本论坛上我曾经看到过一篇帖子,
说是Norton中文版防火墙(英文版没有问题)造成的,那两台机器的确是都装了Norton中文
版,但是另外还有一台机器也安装了Norton中文版,程序运行正常。
我实在是有些搞不懂,现在有一台机器已经被重装系统,运行没有问题(一时还没安装
Norton),但是我的程序需要用户从网上下载运行,总不能让人家遇到问题后重装系统吧。
烦恼......
 
我也遇到类似问题,只能报个提示,提示用户再点一次:(
 
try
Wordapplication1:=Twordapplication.Create(self);
Wordapplication1.Connect;

except
Wordapplication1:=Twordapplication.Create(self);
Wordapplication1.Connect;
end;
 
jiajiajia888[:D][:D][:D][:D][:D][:D]
哈哈,这样的办法你都想的出来真绝呀!!哈哈!不错!:)
不过有点问题,别人没装word怎么办?
try
//CoInitialize(Nil);
myword :=TwordApplication.Create(self);
except
on E: Exception do
begin
E.Message := 'Word 没有安装?';
button1.Enabled :=true;
raise;
end;
end;

try
yword.Connect;
except
myword.Connect ;
end;
 
jiajiajia888
发现最后方法行不通,不知道为什么!
我也遇到了这样的问题,没办法
 
当时为了这个答案我花了300分大富翁币
由于各office版本不同,有的版本有bug,所有要
try 三次

var
myWord, myDoc: olevariant;

PathName: string;
begin
try
myWord := CreateOleObject('Word.Application');
except
try
myWord := GetActiveOleObject('Word.Application');
except
try
myWord := GetActiveOleObject('Word.Application');
except
MessageDlg('对不起,您没有安装Word 软件!,对不起,您没有安装Word 软件,或者word安装不全!', mtInformation,
[mbOk], 0);
abort;
end;
end;
end;
myWord.Visible := True;
myDoc := myWord.Documents.Open(getCurPath + 'wenjian.doc');
myDoc.BookMarks.Item('文件编号').Select;
myDoc.BookMarks.Item('内容').Select;
myWord.Selection.Text := HTMLDecode(DBmemo1.text);
myWord.Activate;
myDoc.SaveAs(getCurPath + '1.doc');

end;
 
"再加200分我告诉你,你知道保证晕过去"
哈哈,艰难的思想斗争阿

谢谢了:)
还有什么好东西,给你200分
 
不好意思~
问题烂掉了~

虽然还不知道根本原因!
但是有办法搞定就是了!
办法嘛~跟山泉说的一样~我也是try了三圈!
呵呵~
 
这个问题我也研究了很久,这里关注一下
 
后退
顶部