J'essaie de copyr datatables de la gamme sheet1 à la plage2, mais rien n'a été copié

J'essaie de copyr datatables de la gamme sheet1 sur la plage2, mais rien n'est copié. C'est le code complet que j'essayais d'accomplir, mais je me suis coincé dans l'endroit basique. Aidez-nous

Edit: J'ai essayé la Macro tout de suite et la même chose s'est produite avec ce code. Consultez l'instantané où vous pouvez voir que le Snap 1 contient des données source et également sélectionné, mais ne sont pas copiés sur Snap 2. Cependant, les plages sont sélectionnées ici.

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

entrez la description de l'image ici

entrez la description de l'image ici

Mettre à jour

Style-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 '====================== 

Style-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 '====================== 

Pourriez-vous me dire quelles sont les différences entre Style-1 et Style-2.Because dans Style-1, toutes datatables copiées sont enregistrées, ce qui n'est pas le cas dans Style-2. Ce problème de design est principalement le problème général auquel j'ai été confronté depuis le matin.

De quelle manière Style-2 n'est pas parfait?

Le moyen le plus simple de copyr d'une gamme à l'autre serait de recoder une macro. En regardant votre code, quelles sont les valeurs que vous obtenez pour TotalRows et LastCol ? En supposant que datatables correspondantes sont returnnées de votre Match() , il y a donc des lignes à copyr

 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 

Dans votre cas, pouvez-vous le simplifier? Supprimez la ligne suivante. Il suffit de spécifier la gamme de départ de Sheet2 et d'essayer. Vous n'avez pas à vous soucier de resize à ce stade.

remplacez-le,

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

avec soit: coz vous manquer, collez l'argument spécial

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

ou: ici sans cellules de fantaisie, mais scope directe

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