在delphi中,怎样复制一个当前激活的工作簿?
本人用Eworkbook.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet方法,然后用copy,paste方法复制新的工作簿,可是不能复制原来的页面格式,页边距等属性,只能重新设置新页面的页面属性,请大家多多指教!

解决方案 »

  1.   

    为什么不同时给赋值给两个WORKSHEET呢?
      

  2.   

    VB写的
    呵呵,自己改一下吧
    Cells.Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste俺是从宏里取出来的
      

  3.   

    >>不能复制原来的页面格式,页边距等属性,只能重新设置新页面的页面属性
    我也困扰过,没办法,改用循环语句赋值
      

  4.   

    EXCEL的各种属性都可以控制,你搜索一下资料吧.
      

  5.   

    本人先用excel做一个模板,上边有一个工作簿。我得想法是在delphi中往excel里填数据时
    动态生成其它的工作簿,因为数据可能不止一页,而且数据的最后一页跟其他的页面不一样。
    所以在模板中做了两个工作簿,一个是普通页面,另一个是最后一个页面。当换页时复制普通的页面
    当最后一页时用那个最后页面。现在的问题是复制普通页面时不能把原来的页面设置复制过去,这样版式就不一样了,因为普通页是经过页面设置的。本来想用rave或其他报表文件做的,可是用户要求打印时要可以修改数据,所以只能用excel来做了。做时就遇上了上边的问题。大家有什么办法么?多多指教。
      

  6.   

    //说明,FWorkBook是目标工作簿,在调用该函数之前已经赋值了
    //sSourceFile:源文件,当然应该是xls文件了
    //sSourceSheet:要拷贝的sheetfunction CopySheet(sSourceFile, sSourceSheet: String): Boolean;
    var
      wbTemp,vLastSheet:Variant;
    begin
      Result:=true;
      vLastSheet:=FWorkBook.Sheets[FWorkBook.Sheets.Count];
      wbTemp:=FWorkBook.Application.Workbooks.Open(sSourceFile);
      try
        try
          wbTemp.Sheets[sSourceSheet].Activate;
          vLastSheet.Activate;
          wbTemp.Sheets[sSourceSheet].Copy(EmptyParam,vLastSheet);
        except
          Result:=false;
        end;
      finally
        wbTemp.Close;
        wbTemp:=Unassigned;
      end;
    end;
      

  7.   

    多谢 百里透红这位大哥了。在下还有一个问题就是如果在一个xlt文件里有一个工作表,程序中
    动态增加一个工作表,我想把第一个工作表的内容用程序控制复制到第二个工作表上,这一步应该容易,用sheet.copy,sheet.paste就行了,问题是第一个工作表的页面格式已经排好了,我想复制时第二个工作表的页面格式也和第一个页面格式一样,有什么好方法么?
      

  8.   

    我遇到过,VBA编程狠恶心
    下面方法
          //打开一个文件
          Excel.WorkBooks.Open(FileName);
          //拷贝出新的一份,不需要再粘贴了,否则就不行了,如果就拷贝后,你可以将WorkBooks[2]
          // 从新命名
          Excel.WorkBooks[1].Sheets.Copy;