控制EXCEL的问题:引用comobj excel中xl类参数不能运行(50分)

  • 主题发起人 主题发起人 山水之间
  • 开始时间 开始时间

山水之间

Unregistered / Unconfirmed
GUEST, unregistred user!
采用以下程序控制excel:
uses Comobj;
const xlcenter = -4108;
try
MsExcel:=CreateOleObject('Excel.Application');
except
on Exceptiondo
raise exception.Create('无法打开Xls文件,请确认已 经安装EXCEL')
end;
MsExcel.Visible:=True;
MsExcel.WorkBooks.Add;
MsExcel.WorkSheets[1].Activate;
。。。。。
MsExcel.worksheets[1].range['D2:F2'].Mergecells:=true;
MsExcel.WorkSheets[1].Cells['D2:F2'].HorizontalAlignment := xlCenter;
MsExcel.WorkSheets[1].Cells[2,4].Value := '323度';
。。。。

为何其中的].HorizontalAlignment := xlCenter;不能运行?报错,类型不匹配?
我使用-4108也不能通过,究竟是何原因?
我查了很多帖子,也没找到这个问题。
请大家帮忙
 
'xlCenter';里面的xlcenter应该改成相应的数字
如果是HorizontalAlignment属性的话,对应表如下
1--常规
2--靠左
3--居中
4--靠右
如果是VerticalAlignment属性,对应如下
1--靠上
2--居中
3--靠下
 
您可以先录一个宏再把宏修改成delphi语句,我觉得MsExcel.WorkSheets[1].Cells['D2:F2'].HorizontalAlignment := xlCenter;
这一句有问题'D2:F2'这几个单元格应该被合并掉了,另外查vba看看xlCenter的值和类型。
 
to terryapp:
依你所言,我将clcenter改成3,还是报错:class Eolewecxception with message 类型不匹配
to newsmile:
我的确将题'D2:F2'这几个单元格合并,然后赋值,然后使之居中。我使用宏参考的
如这类语句:.Cells['D2:F2'].HorizontalAlignment = xlCenter,但delphi就是不认xlcenter参数,我知道是引用comobj的关系。但怎样设置才对呢?
 
参考 http://www.delphibbs.com/keylife/iblog_show.asp?xid=18450
 
to newsmile
你的代码我已看过:
try
excel:=GetActiveOleObject('Excel.Application');
except
excel:=CreateOleObject('Excel.Application');
end;
excel.workbooks.add(-4167);
//只增加一个Sheet,
//excel.workbooks.add //增加三个Sheet
excel.visible:=False;
问题1:GetActiveOleObject和CreateOleObject的区别是什么?
问题2:我修改了程序:见下:
try
try
MsExcel:=GetActiveOleObject('Excel.Application');
except
on Exceptiondo
raise exception.Create('无法打开Xls文件,请确认已 经安装EXCEL')
end;
MsExcel.Visible:=True;
MsExcel.WorkBooks.Add(-4167);
MsExcel.WorkSheets[1].Activate;
MsExcel.worksheets[1].range['D2:F2'].Mergecells:=true;
MsExcel.WorkSheets[1].Cells['D2:F2'].HorizontalAlignment := xlCenter;
MsExcel.WorkSheets[1].Cells[2,4].Value := '323度';
还是同样的问题:类型不匹配,如果消除
MsExcel.WorkSheets[1].Cells['D2:F2'].HorizontalAlignment := xlCenter;
则出来的Excel窗体中只有excel界面,没有表格部分。
问题3:请查阅一下,为何你的程序能使用xlcenter等参数,而我的不能呢?你没有调用comobj吧?但GetActiveOleObject又如何能实现呢?
 
MsExcel.WorkSheets[1].Cells['D2:F2'].HorizontalAlignment := xlCenter;
是不是可以写成
MsExcel.WorkSheets[1].range['D2:F2'].HorizontalAlignment := xlCenter;
 
后退
顶部