我正在尝试将sheet1范围数据复制到sheet2范围,但没有任何复制

我正在试图将sheet1范围数据复制到sheet2范围,但没有得到复制。 这是我试图实现的完整代码,但被卡在基本的地方。 请帮忙

编辑:我刚刚尝试了macros,同样的事情发生在这个代码。 请参阅快照,您可以在其中看到“快照1”包含源数据,并且也被选中,但未被复制到“快照2”。但是在那里select范围。

Sub copy() Range("A1:J4").Select Selection.copy Sheets("Sheet2").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save End Sub 

在这里输入图像说明

在这里输入图像说明

更新

风格1

  Option Explicit Dim objSheet1,objSheet2,TotalRows,TotalcolCopy,strPathExcel1 Dim oXls : Set oXls = CreateObject("Excel.Application") Dim aData ': aData = oWb.Worksheets(1).Range("$A2:$C10") Dim dicP : Set dicP = CreateObject("Scripting.Dictionary") strPathExcel1 = "D:\WIPData\AravoMacro\Finalscripts\GE_Wing_To_Wing_Report.xlsx" oXls.Workbooks.open strPathExcel1 Set objSheet1 = oXls.ActiveWorkbook.Worksheets(1) Set objSheet2 = oXls.ActiveWorkbook.Worksheets(2) TotalRows=oXls.Application.WorksheetFunction.CountA(objSheet1.Columns(1)) - 3 TotalcolCopy=oXls.Application.WorksheetFunction.Match("Parent Business Process ID", objSheet1.Rows(3), 0) objSheet1.Range(objSheet1.Cells(4,1),objSheet1.Cells(TotalRows,TotalcolCopy)).Copy(objSheet2.Range("A1")) '======================= oXls.ActiveWorkbook.SaveAs strPathExcel1 oXls.Workbooks.close oXls.Application.Quit '====================== 

风格-2

  Option Explicit Dim objSheet1,objSheet2,TotalRows,TotalcolCopy,strPathExcel1 Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject") Dim oXls : Set oXls = CreateObject("Excel.Application") Dim aData ': aData = oWb.Worksheets(1).Range("$A2:$C10") Dim dicP : Set dicP = CreateObject("Scripting.Dictionary") oXls.Workbooks.Open(oFs.GetAbsolutePathName("Test.xlsx")) Set objSheet1 = oXls.ActiveWorkbook.Worksheets(1) Set objSheet2 = oXls.ActiveWorkbook.Worksheets(2) TotalRows=oXls.Application.WorksheetFunction.CountA(objSheet1.Columns(1)) - 3 TotalcolCopy=oXls.Application.WorksheetFunction.Match("Parent Business Process ID", objSheet1.Rows(3), 0) objSheet1.Range(objSheet1.Cells(4,1),objSheet1.Cells(TotalRows,TotalcolCopy)).Copy(objSheet2.Range("A1")) '======================= oXls.ActiveWorkbook.SaveAs "Test.xlsx" oXls.Workbooks.close oXls.Application.Quit '====================== 

你们能告诉我Style-1和Style-2之间有什么区别吗?因为在Style-1中所有的复制数据都被保存了,Style-2并不是这样。 这个devise问题主要是我早上面对的整体问题。

风格2是不是完美的?

从一个范围复制到另一个最简单的方法是重新编码macros。 看看你的代码,你得到的TotalRowsLastCol的值是LastCol假设你有Match()返回的匹配数据,所以有要复制的行

 Option Explicit Sub CopyPastes() Dim rng1 as Range Dim rng2 as Range Set rng1 = Sheets(1).Range("B2:C12") Set rng2 = Sheets(2).Range("B2") rng1.Copy rng2.PasteSpecial xlPasteValues End Sub 

所以在你的情况下,你可以保持简单吗? 删除以下行。 只需指定Sheet2的起始范围并尝试。 此时您不必担心重新resize

取代这个,

 ObSheet2.Range(ObSheet2.Cells(4,1),ObSheet2.Cells(TotalRows,LastCol)).PasteSpecial 

与任一:因为你缺less粘贴特殊的说法

 ObSheet2.Range(ObSheet2.Cells(4,1),ObSheet2.Cells(TotalRows,LastCol)) _ .PasteSpecial xlPasteValues 

或者:这里没有任何花式细胞,而是直接射程

 ObSheet2.Range(ObSheet2.Range("A4").PasteSpecial xlPasteValues