跪求各位高手帮小弟我看看这个小问题,我已经快抓狂了。(100分)

  • 主题发起人 主题发起人 jbz_szu
  • 开始时间 开始时间
J

jbz_szu

Unregistered / Unconfirmed
GUEST, unregistred user!
我是通过delphi的ole调用word进行编程的,在调用word的时候
CreateOleObject('Word.Application');
WordApp:=GetActiveOleObject('Word.Application');
...
oshape.Width :=WordApp.InchesToPoints(6.25);
oshape.Height :=WordApp.InchesToPoints(4);
...
调用WordApp.InchesToPoints(6.25);老是出错,
系统显示“未指定的错误”。
我已经弄了一个上午了,还是没法解决这个问题,我查过了vba的帮助,还是看不出问题出在哪里。

劳烦各位高手我看看,我用的是delphi7+word2003

代码:
 
要定义一个olevariant,
var
mywidth,myheight:olevariant;
begin
...........
mywidth:=6.25;
myheight:=4;
oshape.Width :=WordApp.InchesToPoints(mywidth);
oshape.Height :=WordApp.InchesToPoints(myheight);
..............

end;
 
delphi7支持word2003吗?
好像最高到word2002吧.
你看看wordxxx.tld是多少,在决定
 
我有定义oldvariant,
我原来试过用xfast,的方法,还是出现同样的错误,

问题是出在:WordApp.InchesToPoints(mywidth);
 
是要这样定义的,不然是运行不了的,可能你前面的代码错误。把它贴出来看看。
 
var
MyDoc,WordApp:OleVariant ;
i,p,q :integer;
MyDocFileName:string;
Template,NewTemplate :Variant;
ochart,oshape,mysheet,test,MsGraphApp,MyWidth,MyHeight:OleVariant ;
ClassType,FileName,LinkToFile,DisplayAsIcon :Variant;
begin
CreateOleObject('Word.Application');
WordApp:=GetActiveOleObject('Word.Application');
WordApp.Visible := true;
MyDoc := WordApp.Documents.Add;
//-----------------------画图-----------------------
CreateOleObject('MsGraph.Application');
MsGraphApp :=GetActiveOleObject('MsGraph.Application');

ochart := MsGraphApp.chart;
oshape :=WordApp.Selection.Bookmarks.Item('/EndOfDoc').Range.InlineShapes.AddOLEObject(ClassType :='msgraph.chart.8',FileName :='',LinkToFile :=False,DisplayAsIcon :=False);

ochart :=oshape.OLEFormat.Object;

ochart.HasLegend :=True;
ochart.HasDataTable := True;

mysheet :=ochart.DataTable.Application.Datasheet;
mysheet.Cells.clear;

i := 29;
p :=1;
q :=1;
mysheet.Cells(p,2) :='A';
mysheet.Cells(p,3) :='B';
mysheet.Cells(p,4) :='C';
p :=p+1;
mysheet.Cells(p,2) :=i;
i := i+8;
mysheet.Cells(p,3) :=i;
i := i+8;
mysheet.Cells(p,4) :=i;

mysheet.Cells(2,1) :='广告量';


ochart.HasTitle :=True ;
ochart.ChartTitle.Text :='各媒体广告量';
ochart.chartTitle.Font.Size :=9;

ochart.Walls.Interior.ColorIndex :=0 ;

ochart.Legend.Delete;

ochart.DataTable.Font.Size :=5;

ochart.Application.Update;
ochart.Application.Quit;

oshape.Width :=WordApp.InchesToPoints(6.25);
oshape.Height :=WordApp.InchesToPoints(4);
 
xfast兄,我用delphi运行的时候,它是运行到
oshape.Width :=WordApp.InchesToPoints(6.25);
才提示出错的,
后来我又试了一下,oshapd.Width:=450;
是可以通过的,所以我才猜是 WordApp.InchesToPoints()这个的问题,
 
可能是你指定的宽度比oshape里面存放内容的宽度的小,导致异常。
 
接受答案了.
 
后退
顶部