Excelapp.WorkBooks.Add,怎么才能控制增加sheet的个数?(50分)

  • 主题发起人 主题发起人 Wizard00
  • 开始时间 开始时间
W

Wizard00

Unregistered / Unconfirmed
GUEST, unregistred user!
Excelapp.WorkBooks.Add,怎么才能控制增加sheet的个数?不知道能不能加呀。请高人指点。
 
可以控制的,以前见过这样的资料的
你搜索一下这方面的资料,
会有答案的,
 
ExcelApplication1.Workbooks.Add(EmptyParam, 0); //新建
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet); ??
 
我的语句是这样的,

var
ExcelApp,ExcelWorkSheet:Variant;
sheet:oleVariant;
begin
ExcelApp:=CreateOleObject('Excel.Application');
Excelapp.visible:=true;
ExcelWorkSheet:=Excelapp.WorkBooks.Add;//??增加几个表
end;
 
应该是三个表,excel默认的可以自己修改
如果不知道的话可以录制一宏来看一下源码就知道了。

我的语句是这样的,

var
ExcelApp,ExcelWorkSheet:Variant;
sheet:oleVariant;
begin
ExcelApp:=CreateOleObject('Excel.Application');
Excelapp.visible:=true;
ExcelWorkSheet:=Excelapp.WorkBooks.Add;//??增加几个表
end;
 
已经录制了,没有参数,

Workbooks.Add
Sheets("Sheet3").Select
Sheets.Add

宏的内容是这样的,找不到参数。
 
控制增加sheet的个数?好象不行,除非你自己计数来控制增加,Excelapp.WorkBooks.Add
是死的。
 
to chnplzh
问题是怎么控制,我想知道,怎么才能计数增加。
本来我以为是
Excelapp.WorkBooks.Add(n);结果不对。
是没有人知道,还是不能加呀,在我看来,如果这个语句不可以,其它语句应该可以。
但问题是怎么加。
 
to Wizard00:
因为excel是你自己调用的,那你当然可以控制Excelapp.WorkBooks.Add的运行次数,
而不应该让excel自己来控制。
 
to chnplzh:写一个代码看看吧,如果add两次结果是两个不同的文件,不是一个文件的上多加sheet,即会出来2个sheet1,sheet2,sheet3,不是sheet1到sheet6。不明白你的意思。
 
to Wizard00:
刚刚运行了一下excel,并利用宏录制功能,发现它增加sheet的方法是如下代码,
你可以测试一下:
Sheets("Sheet3").Select
Sheets.Add
Sheets("Sheet4").Select
Sheets.Add
 
已经录制了,没有参数,

Workbooks.Add
Sheets("Sheet3").Select
Sheets.Add

宏的内容是这样的,找不到参数。


我说过了。

不知道怎么才能往后面插入sheet?对Excel还是不怎么熟悉,能不能给
录一个看看。谢谢!
 
to Wizard00:
"不知道怎么才能往后面插入sheet?",excel是这么实现的,二种方法:
1、先插入一个sheet,然后将它移到后面(在excel中,可以直接拖动下面的表名来移动);
2、也可以使用建立副本的方法,并移到最后。

以下同样摘自excel的宏录入功能:

Sheets("Sheet3").Select
Sheets("Sheet3").Move After:=Sheets(2)
Sheets("Sheet3").Select
Sheets("Sheet3").Copy After:=Sheets(3)
Sheets("Sheet3 (2)").Select
Sheets.Add
Sheets("Sheet4").Select
Sheets("Sheet4").Move After:=Sheets(5)
Sheets("Sheet4").Select
 
to chnplzh:谢谢,
我试验了一下,在delphi中 move after 报错,查找了Excel 2000的代码,没有结果,
怎么才能用delphi 替换它。
 
以下摘自delphi自带的excel2000.pas的部分代码,你好好研究一下:

Sheets = interface(IDispatch)
['{000208D7-0000-0000-C000-000000000046}']
function Get_Application: ExcelApplication; safecall;
function Get_Creator: XlCreator; safecall;
function Get_Parent: IDispatch; safecall;
function Add(Before: OleVariant; After: OleVariant; Count: OleVariant; Type_: OleVariant;
lcid: Integer): IDispatch; safecall;
procedure Copy(Before: OleVariant; After: OleVariant; lcid: Integer); safecall;
function Get_Count: Integer; safecall;
procedure Delete(lcid: Integer); safecall;
procedure FillAcrossSheets(const Range: Range; Type_: XlFillWith; lcid: Integer); safecall;
function Get_Item(Index: OleVariant): IDispatch; safecall;
procedure Move(Before: OleVariant; After: OleVariant; lcid: Integer); safecall;
function Get__NewEnum: IUnknown; safecall;
procedure _PrintOut(From: OleVariant; To_: OleVariant; Copies: OleVariant; Preview: OleVariant;
ActivePrinter: OleVariant; PrintToFile: OleVariant; Collate: OleVariant;
lcid: Integer); safecall;
 
抓了一个 Excelapplication,ExcelWorkSheet,ExcelWorkBook,可以提示
ExcelWorkSheet.Move(Before: OleVariant; After: OleVariant; lcid: Integer);
问题是不知道参数是怎么写的。郁闷中。
 
结帖,谢谢!
 
后退
顶部