VB:复制范围到另一个Excel应用程序

我试图解决一个相对简单的问题,但我不明白这一点。 我的目标是将主Excel应用程序的工作表中的单元格范围复制到第二个新创build的Excel应用程序的工作表中另一个范围(相同大小)。 我通过使用创build第二个应用程序

Set secondExApp = CreateObject("Excel.Application") 

我正在使用这个参考进一步处理。 直到现在我已经尝试了两种不同的方式。 两者都不能正常工作。

0 .:准备/介绍

 Set srcWb = Application.ActiveWorkbook Set srcSheet = srcWb.Worksheets("example") Set dstApp = CreateObject("Excel.Application") Set dstWb = dstApp.Workbooks(1) Set dstSheet = dstWb.Worksheets(1) 

1:PasteSpecial – 提供一个图像(!),而不仅仅是范围

 srcSheet.Range("A1:B2").Copy dstSheet.Range("A1:B2").PasteSpecial xlPasteAll 

2 .: Range.Copy [目的地] – 不起作用 – 是否正确,我只能在相同的应用程序中使用这种方法?

 srcSheet.Range(srcSheet.Cells(..., ...), srcSheet.Cells(..., ...)).Copy _ dstSheet.Range(dstSheet.Cells(..., ...), dstSheet.Cells(..., ...)) 

任何帮助表示赞赏。


编辑 :我已经玩“loggingmacros”的function,但我更喜欢编码它自己没有“select”或“激活”单元格/表/等


编辑( 解决 :非常感谢GSerg和iDevlop,你为我提供了一个更好的起点。 就像xlClipboardFormatDspText一样,我对Excel常量做了一些研究。

真正帮助我的是,打开一个新的Excel实例改变了粘贴(特殊)菜单。

因此,我现在只需添加一个工作簿(可以隐藏)并使用这个对象来添加我的内容,而不是创build一个新的实例。 由于它在同一个实例中(也可以看一下任务pipe理器),粘贴(特殊)菜单是完全相同的。

现在即使没有select,也可以使用Range.Copy [目标]!

结果

 'Hides the new workbook Application.ScreenUpdating = False Set dstWb = Workbooks.Add Set dstSheet = dstWb.Worksheets(1) srcSheet.Range(srcSheet.Cells(..., ...), srcSheet.Cells(..., ...)).Copy dstSheet.Paste dstSheet.Range(dstSheet.Cells(..., ...), dstSheet.Cells(..., ...)) 'Avoids the often seen dashed border around the copied range Application.CutCopyMode = False 'Setting the initial change back Application.ScreenUpdating = True 

软件:Excel 2007

正如通过用棍子戳Excel来确定的,您必须使用Worksheet.Paste来进行跨部门的Worksheet.Paste

 srcSheet.Range("A1:B2").Copy dstSheet.Paste dstSheet.Range("A1") 

用较粗的棍子戳Excel可以发现,当从剪贴板粘贴时,公式被保存为xlClipboardFormatDspText

 srcSheet.Range("A1:B2").Copy dstSheet.Range("A1").Select dstSheet.PasteSpecial xlClipboardFormatDspText, False 

但是,这需要首先在dstSheet上select一个单元格,因为Worksheet.PasteSpecial使用活动单元格。