word是个鸡肋~~~~~~~~~~~~~~~~用ole的方法创建word不成功(162分)

  • 主题发起人 主题发起人 ildg
  • 开始时间 开始时间
I

ildg

Unregistered / Unconfirmed
GUEST, unregistred user!
不能用createoleobject方法创建word对象,
重装word没有用,
非得重装系统再装word。
昨天刚装的系统再装了word,试了一下还可以,
今天又不行了,郁闷死。
我用的代码如下:
var
FWord: Variant;
FDoc: Variant;
// FRange: Variant;
begin
Screen.Cursor := crHourGlass;
try
FWord := CreateOleObject('Word.Application');
FWord.Visible := True;
except
Screen.Cursor := crDefault;
ShowMessage('创建word对象失败!');
Exit;
end;
现在运行时总是显示“创建word对象失败”,
我用任务管理器看进程中的列表,
发现winword其实已经创建了,
调试的时候出现提示“被叫对方拒绝呼叫”,
真恶心,
请问怎么在不重装系统的情况下解决这个问题?
我把全部的162分奉上
 
试试这个:
FWord := CreateOleObject('word.basic');
FWord.appshow;
另外你的代码中 Screen.Cursor := crDefault; 应该放在finally中而不能放在except中
,否则只有出现异常的时候光标才恢复。

 
我试了,还是一样的结果,
调试的时候显示信息“被呼叫方拒绝接收呼叫”。
光标在那个地方设置没有问题的,
呵呵,
我后面还有一段
try
FDoc := FWord.Documents.Add;
FWord.ActiveDocument.Tables.Add(
Range := FWord.Selection.Range,
NumRows := 2,
NumColumns := 5,
DefaultTableBehavior := wdWord9TableBehavior,
AutoFitBehavior := wdAutoFitFixed);

FWord.Selection.TypeText(Text := '11');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '12');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '13');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '14');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '15');
FWord.Selection.MoveRight(unit := wdCell);
FWord.Selection.TypeText(Text := '21');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '22');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '23');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '24');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
FWord.Selection.TypeText(Text := '25');
FWord.Selection.MoveRight(unit := wdCharacter, Count := 1);
finally
Screen.Cursor := crDefault; ;
end; ;
这段开始没贴出来,
加上这段以后光标就总能调整了。
 
可能是你Word的问题
我原来用Excel也出现这个问题,程序出错以后,Excel不能显示,以后再执行虽然能启动Excel但画面不出现,不过注销一下就行了
你直接运行Word试试,看能不能启动
 
直接启动word没有问题,
我说过了,
这个问题除了重装系统再装word以外,
我还不知道用什么方法可以搞定。
——所以我目前只能认为word是一驼屎。
希望哪位大虾能帮帮我
 
看你的问题
try
FWord := CreateOleObject('Word.Application');
FWord.Visible := True;
except
Screen.Cursor := crDefault;
ShowMessage('创建word对象失败!');
Exit;
end;

任务管理器中已经创建了,有这么些可能:
1.把 FWord.Visible := True;注释掉,看是不是这句引起的,
FWord := CreateOleObject('Word.Application');是不是能正常执行
2.如果是FWord := CreateOleObject('Word.Application')这句出错,而Word对象又已创建,可能是创建之后没有返回值,是不是你的Delphi与Word的版本不兼容引起的.换个Word或换Delphi试试


 
这个问题,我回答过好多次了,word有的版本有一些bug,解决方法如下
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');
 
经调试发现是createoleobject函数调用失败,
word问题。
谢谢几位的回答,
问题还是得不到解决。
我装好了word以后并没有对word作任何改变,
居然就不能创建成功了。
但是用用这样的方法好多次,
很多次都是成功的,
但一旦失败了,就只有重装操作系统了。
所以我只能说word是个鸡肋。
再次感谢几位的帮忙,
明天再来散分。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
550
import
I
I
回复
0
查看
697
import
I
后退
顶部