すべてのワークブックを統合して各ワークシートのデータ全体をコピーするマクロを作成しました。複数のワークを1つに統合し、各ワークシートから2行だけをコピーしたい
しかし、私は行A2とA3である各統合シートから2行だけコピーしたいと思います。
私はVBAではあまりよくありませんが、このマクロはさまざまなソースから作成しました。 助けてください。
Sub CombilnedWorkBook_and_Sheets()
Dim J As Integer
Dim ws As Worksheet
Dim varFieldName As Variant
Dim lngLoop As Long
Dim rngFound As Range
Dim rngCopy As Range
Dim lngLastRow As Long
Dim lngLastRow1 As Long
Dim lngCol As Long
Dim wksTarget As Worksheet
Application.DisplayAlerts = False
Set wksTarget = ThisWorkbook.Worksheets("Consolidated")
varFieldName = Array("Patient Name", "DOB", "Admit_date", "Discharge_date", "Primary_DX_Code", "BPS PDF", "Consultation Doc", "Discharge Agreement", "EMF PDF", "Financial PDF", "ID & Insurance Card", "Lab Report PDF", "Legal History", "Medical Docs PDF", "Progress Notes PDF", "Pass Documentation", "Treatment Agreement", "Utilization Review", "User")
Path = Sheet1.Range("C9").Value
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close savechanges:=False
Filename = Dir()
Loop
wksTarget.Range("a1").CurrentRegion.Offset(1).ClearContents
For J = 2 To Sheets.Count
lngLastRow1 = wksTarget.Cells(wksTarget.Rows.Count, "A").End(xlUp).Row + 1
Sheets(J).Activate
For lngLoop = 0 To UBound(varFieldName)
Set rngFound = Range("A1").EntireRow.Find(varFieldName(lngLoop))
If Not rngFound Is Nothing Then
lngCol = rngFound.Column
lngLastRow = ActiveSheet.Cells(Rows.Count, lngCol).End(xlUp).Row
With ActiveSheet.Range("A1").CurrentRegion.Columns(lngCol)
Set rngCopy = .Offset(1).Resize(.Rows.Count - 1)
End With
rngCopy.Copy Destination:=wksTarget.Cells(lngLastRow1, lngLoop + 1)
Set rngFound = Nothing
Set rngCopy = Nothing
lngCol = 0
lngLastRow = 0
End If
Next lngLoop
Next
Sheets(1).Select
Columns("A:Z").Select
Selection.EntireColumn.AutoFit
Application.DisplayAlerts = False
For Each ws In Worksheets
If ws.Name <> "Consolidated" And ws.Name <> "Run Macro" Then ws.Delete
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = False
MsgBox "File has been coppied Successfully"
End Sub
行2と3、またはセルA2とA3を意味しますか? – DecimalTurn
行を意味する場合は、右側に 'Set rngCopy ='に '.range(" 2:3 ")をつけて行を編集する必要があります。それ以外の場合は、「2:3」の代わりに「A2:A3」を使用します。 – DecimalTurn