2015-09-04 117 views
0

我有几个工作表.xls文件。我有几张纸.xlsm文件。我想将xls.sheet(x)复制到xlsm.sheet(y)中。我尝试下面的代码:将.xls工作表复制到.xlsm工作表

try 
    XLTo := CreateOleObject('Excel.Application'); 
    XLFrom := CreateOleObject('Excel.Application'); 
except 
    ShowMessage('Excel might not be installed'); 
    exit; 
end; 

XLFrom.Workbooks.Open(filename1,1); 
XLTo.Workbooks.Open(filename2,1); 
SheetFrom := XLFrom.WorkSheets['Sheet Caption']; 
SheetTo := XLScreener.WorkSheets['Sheet Caption']; 
SheetFrom.Select; 
SheetTo.Select; 

直到这里,一切正常,现在我需要SheetFrom复制到SheetTo但我对如何做到这一点困惑。我试过了:

SheetScreener.Copy(SheetDF); 

但是我得到一个错误“工作表类的复制方法失败”。 SheetTo(xlsm)是一个常用工作表,其中包含要用SheetFrom的数据覆盖的数据。

我错过了什么?

我读了互联网,看到了几种方法,但我不知道我是否因为.xlsm或因为我做了错误而失败。另外,我读到它必须使用相同的Excel应用程序,但我从两个不同的文件复制,所以我不知道如何去做。

+0

是否要在目标中创建新工作表或覆盖现有工作表的内容? –

+0

覆盖现有工作表(SheetTo) – Amos

+0

您是否需要先将其删除,然后创建一个新工作表?或者这会打破裁判?如果是这样,那么你可能需要复制范围而不是表单。复制工作表会创建一个新工作表。 –

回答

1

当您复制工作表时,会在目标工作簿中创建新工作表。我想你实际上是想覆盖现有的工作表内容。在这种情况下,请执行以下操作:

  • 将源指定为源工作簿中的Range对象。
  • 将目标指定为目标工作簿中的Range对象。只需指定左上角的单元即可。
  • 使用Source.Copy(Dest)执行复制。
0

要复制表,将它插入最后一片尝试

SheetFrom.Copy(XLTo.Sheets(XLTo.Sheets.Count)) 

然后你就可以删除原始SheetTo - 如果这对你的作品

编辑:更正语法德尔福

+0

这是德尔福,所以我更改了代码对此:SheetFrom.Copy(XLTo.Sheets(XLTo.Sheets.Count));但我得到了“找不到成员” – Amos

+0

也许你应该只创建一个'Excel.Application'对象的实例。 – TLama

+0

我设法使用相同的Excel应用程序打开2张,现在我试图选择一张纸时出现错误 – Amos

相关问题