将 .xls sheet 复制到 .xlsm sheet
Copy .xls sheet into .xlsm sheet
我有几个 sheet 的 .xls 文件。我有几个 sheet 的 .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);
但是我得到一个错误 "copy method of worksheet class failed"。 SheetTo (xlsm) 是一个常规的 sheet,其中包含我想用 SheetFrom 的数据覆盖的数据。
我错过了什么?
我在网上看到了几种方法,但我不知道我失败是因为它是 .xlsm 还是因为我做错了什么。另外,我读到它必须与相同的 Excel 应用程序一起使用,但我正在从两个不同的文件中复制,所以我不确定该怎么做。
要复制 sheet 并将其作为最后一个插入 sheet 试试
SheetFrom.Copy(XLTo.Sheets(XLTo.Sheets.Count))
然后您可以删除原始 SheetTo - 如果这适合您
编辑:更正了 delphi
的语法
当您复制 sheet 时,会在目标工作簿中创建一个新的 sheet。我认为您实际上想覆盖现有 sheet 的内容。在这种情况下执行以下操作:
- 将源指定为源工作簿中的
Range
对象。
- 将目标指定为目标工作簿中的
Range
对象。只需指定左上角的单元格就足够了。
- 使用
Source.Copy(Dest)
执行复制。
我有几个 sheet 的 .xls 文件。我有几个 sheet 的 .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);
但是我得到一个错误 "copy method of worksheet class failed"。 SheetTo (xlsm) 是一个常规的 sheet,其中包含我想用 SheetFrom 的数据覆盖的数据。
我错过了什么?
我在网上看到了几种方法,但我不知道我失败是因为它是 .xlsm 还是因为我做错了什么。另外,我读到它必须与相同的 Excel 应用程序一起使用,但我正在从两个不同的文件中复制,所以我不确定该怎么做。
要复制 sheet 并将其作为最后一个插入 sheet 试试
SheetFrom.Copy(XLTo.Sheets(XLTo.Sheets.Count))
然后您可以删除原始 SheetTo - 如果这适合您
编辑:更正了 delphi
的语法当您复制 sheet 时,会在目标工作簿中创建一个新的 sheet。我认为您实际上想覆盖现有 sheet 的内容。在这种情况下执行以下操作:
- 将源指定为源工作簿中的
Range
对象。 - 将目标指定为目标工作簿中的
Range
对象。只需指定左上角的单元格就足够了。 - 使用
Source.Copy(Dest)
执行复制。