我用DELPHI做一个控制EXCEL的程序,用的是EXCEL控件法,但是通过控件的一些诸如插入,删除操作都会出错? 本帖最后由 pengchao025 于 2012-03-08 10:13:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你找一个Excel VBA的帮助看看。 //插入行procedure TExcelApp.InsertRow(ARow:integer);begin ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select; ExcelApplication1.Selection.Insert(Shift:=xlDown);end;//插入列procedure TExcelApp.InsertCol(ACol:String);begin ExcelApplication1.ActiveSheet.Columns.item[ACol+':'+ACol].Select; ExcelApplication1.Selection.Insert(Shift:=xlToRight);end;//删除行procedure TExcelApp.DeleteRow(ARow:integer);begin ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select; ExcelApplication1.Selection.Delete(Shift:=xlUp);end;//删除列procedure TExcelApp.DeleteCol(ACol:String);begin ExcelApplication1.ActiveSheet.Columns.item[ACol+':'+ACol].Select; ExcelApplication1.Selection.Delete(Shift:=xlToLeft);end; 如果不知道语法,可以采用新建一个Excel文件,然后开始录制宏,然后你操作你要操作的内容,然后查看宏,就可以知道程序怎么写了 楼上说的方法当然可以;但是录制宏的某些方法在delphi里面实现是不一样的;宏里面是以VB的语法实现的。 3楼的意思是自己写函数?但是我现在是这些ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select;ExcelApplication1.Selection.Insert(Shift:=xlDown);都编译不通过啊。ActiveSheet下就没有Rows。。 ExcelApplication1.ActiveSheet.Range.[ ''A1'' ].PasteSpecial;ExcelApplication1.ActiveSheet.Range.PasteSpecial;还有粘贴这种写法也不行。我都是先Select一行,再paste。 同意三楼说法。Delphi 通过COM调用Excel写法基本和VBA写法一致。如何写可以查看VBA帮助,不会VBA,不知道EXCEL元素,用什么写都是白扯。Excel2007打开方法:Excel打开,点左上选角最大的图标,Excel项。常用里面选上:在功能区显示“开发工具”选项卡。在开发工具页面点VISUAL BASIC,然后插入类模块,写个ActiveSheet按F1,然后需要什么就查吧。 录了个复制的宏 Range("A1:G1").Select Selection.Copy Rows("3:3").Select ActiveSheet.Paste删除 Selection.Delete Shift:=xlUp知道大概意思了,但是DELPHI里activesheet下就没有Paste那些方法,怎么回事了? 我也遇到了这个问题,最后 我是控件和xlsRange: Variant混用才解决的,我也知道这种方法不好,但就是没找到更好的办法 请教Delphi中偏移问题 一个很奇怪的问题 如何用Delphi制作ocx文件 如何取得目录下的所有文件夹名称 Delphi+SQLserver2000PE的几个简单问题! 如何做一个有颜色的按钮,不用第SAN方控件 如何将 RxRichEdit 中的图片取出来,生成文件 学Delphi的同道来瞧瞧啊,急啊 三层结构问题请教???????????????? 很简单的几个小问题# delphi socket通信 如何发送XML文件,如何给个例子啊?高手 Delphi 调用Web Service接口,出错?求教!!!
procedure TExcelApp.InsertRow(ARow:integer);
begin
ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select;
ExcelApplication1.Selection.Insert(Shift:=xlDown);
end;
//插入列
procedure TExcelApp.InsertCol(ACol:String);
begin
ExcelApplication1.ActiveSheet.Columns.item[ACol+':'+ACol].Select;
ExcelApplication1.Selection.Insert(Shift:=xlToRight);
end;
//删除行
procedure TExcelApp.DeleteRow(ARow:integer);
begin
ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select;
ExcelApplication1.Selection.Delete(Shift:=xlUp);
end;
//删除列
procedure TExcelApp.DeleteCol(ACol:String);
begin
ExcelApplication1.ActiveSheet.Columns.item[ACol+':'+ACol].Select;
ExcelApplication1.Selection.Delete(Shift:=xlToLeft);
end;
但是我现在是这些
ExcelApplication1.ActiveSheet.Rows.item[inttostr(ARow)+':'+Inttostr(ARow)].Select;
ExcelApplication1.Selection.Insert(Shift:=xlDown);
都编译不通过啊。ActiveSheet下就没有Rows。。
ExcelApplication1.ActiveSheet.Range.PasteSpecial;
还有粘贴这种写法也不行。我都是先Select一行,再paste。
Delphi 通过COM调用Excel写法基本和VBA写法一致。
如何写可以查看VBA帮助,不会VBA,不知道EXCEL元素,用什么写都是白扯。
Excel2007打开方法:
Excel打开,点左上选角最大的图标,Excel项。常用里面选上:在功能区显示“开发工具”选项卡。
在开发工具页面点VISUAL BASIC,然后插入类模块,写个ActiveSheet按F1,然后需要什么就查吧。
Range("A1:G1").Select
Selection.Copy
Rows("3:3").Select
ActiveSheet.Paste
删除 Selection.Delete Shift:=xlUp
知道大概意思了,但是DELPHI里activesheet下就没有Paste那些方法,怎么回事了?