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
使用活动单元格。