想把新生成EXCEL的SHEET放到相应的位置?(100分)

  • 主题发起人 主题发起人 simon77_shen
  • 开始时间 开始时间
S

simon77_shen

Unregistered / Unconfirmed
GUEST, unregistred user!
比如想把新生成的SHEET放到相应的位置?

比如我是把一年度的报表放在一个文件里。
我要生成‘五月份’的报表,然后想让它自动插在‘四月份’之后,
如果没有指定的话,它默认的会插在‘四月份’之前,
我用宏转换总有错误,不知谁处理过这种情况?
 
Sheets("四月份").Select
Sheets.Add
Sheets("五月份").Select
Sheets("五月份").Move After:=Sheets('四月份')
 
不是有一个item()属性吗,
sheet1=Workbooks.get_Item(1)
当你生成后就分别将所有的sheet指定到对应的item中
例如
sheet1是item(1)
sheet2是item(2)
这样你就反过来做

不知道可不可以。
 
你的这个是宏,我转成DELPHI,试了很多种,都有不同的错误提示
ExlApp.Sheets('四月').Select;
提示:找不到成员
这样:ExlApp.Sheets.Item[ExlApp.Sheets.Count].Select;
可以通过。
但是下面的:Sheets("五月份").Move After:=Sheets('四月份'),
我用:ExlApp.Sheets.Item[ExlApp.Sheets.Count].Move(After := Sheets('四月份'));
编译不过。
我用:ExlApp.Sheets.Item[ExlApp.Sheets.Count].Move(After := Sheets(sheetPage));
可以通过编译,这里的sheetPage是我传递的参数,如1,2,3。。。
但是运行的时候出错?
我如果直接用ExlApp.Sheets.Item[ExlApp.Sheets.Count].Move(After := Sheets(4));
它提示:Invalid typeCast

方法:procedure TExcel.moveSheet(SheetPage: Integer);
begin
if SheetPage > 3 then
begin
//ExlApp.Sheets('四月').Select;
//ExlApp.Sheets(1).Move(After := Sheets(SheetPage));
ExlApp.Sheets.Item[ExlApp.Sheets.Count].Select;
ExlApp.Sheets.Item[ExlApp.Sheets.Count].Move(After := Sheets(SheetPage));
//ExlApp.Sheets(4).Move(After := Sheets(4));
end;
end;

 
四月份、五月份是WORKSHEET的名字。
新的EXCEL文档的两个WORKSHEET的名字分别是:Sheet1,Sheet2,你可以改成其它的。
Delphi代码形如:
ExcelApp.WorkSheets['Sheet2'].Activate;
 
我知道怎么做了,谢谢
这是我的代码,希望对后来人有所帮助:)

procedure TExcel.moveSheet(SheetName: String; SheetPage: Integer);
var
sheetNum: Integer;
begin
sheetNum := ExlApp.Sheets.Count;
if (SheetPage>3) and (SheetPage=sheetNum) then
begin
ExlApp.WorkSheets[SheetName].Select;
ExlApp.WorkSheets[SheetName].Move(After:=ExlApp.WorkSheets[SheetPage]);
end;
end;
 
多人接受答案了。
 
后退
顶部