0

sheet1 範囲データを sheet2 範囲にコピーしようとしていますが、何もコピーされません。これは、私が何かを達成しようとしていたが、基本的な場所で動けなくなった完全なコードです。助けてください

編集:私は今マクロを試しましたが、このコードでも同じことが起こりました。スナップ 1 にソース データが含まれており、選択されているが、スナップ 2 にコピーされていないことを確認できるスナップショットを確認してください。ただし、範囲はそこで選択されています。

  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 には当てはまりません。この設計の問題は主に、朝から直面していた全体的な問題です。

Style-2 が完璧ではない理由は何ですか?

4

1 に答える 1

3

ある範囲から別の範囲にコピーする最も簡単な方法は、マクロを再コーディングすることです。あなたのコードを見て、あなたが得ている価値は何TotalRowsですか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

どちらかで:cozあなたは特別な引数を貼り付けてください

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

または:ここでは派手なセルはありませんが、直接の範囲

ObSheet2.Range(ObSheet2.Range("A4").PasteSpecial xlPasteValues
于 2012-12-20T08:04:00.823 に答える