0

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

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 应用程序,但我从两个不同的文件中复制,所以我不知道该怎么做。

4

2 回答 2

1

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

  • 将源指定为Range源工作簿中的对象。
  • 将目标指定为Range目标工作簿中的对象。只需指定左上角的单元格就足够了。
  • 用于Source.Copy(Dest)执行复制。
于 2015-09-05T12:40:16.640 回答
0

要复制工作表并将其作为最后一张工作表插入,请尝试

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

然后你可以删除原来的 SheetTo - 如果这对你有用

编辑:更正了 delphi 的语法

于 2015-09-04T21:33:13.680 回答