「S4」から始まる列を特定の名前のワークシートにコピーする必要がある複数のスプレッドシートがあり、データを含むその列のセル(S4とその下のすべて)のみが必要です。
そのデータをコピーして、特定のワークシートのA2から始まる「メイン」スプレッドシートに貼り付ける必要があります。これは1つのスプレッドシートで実行できますが、発生している問題は、A列の最後のセルで値があり、その下のセルに新しいデータの貼り付けを開始するためにVBAが必要です。他のスプレッドシートを見ると、メインのスプレッドシートのデータを上書きしているだけです。
S4:S2000の指定された範囲に気付くでしょう-その目的は単一のスプレッドシート用でした。2000年以降のデータはなかったので問題なく機能しましたが、実際にはセル値を探してそれらを取得する必要があります。
これは私が問題を抱えているコードのチャンクです。A2から検索して(列ヘッダーをスキップして)、値を持つ最後のセルを探し、S4から始まる値のセルを他のワークシートに貼り付けます。
On Error Resume Next
Set wbkCS = Workbooks.Open(strCutSheetFile(i))
On Error GoTo 0
If Not wbkCS Is Nothing Then
With wbkVer.Sheets("Cutsheets")
.Range(.Cells(2,1)).End(xlUp).Row = wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Value
保護されたファイルを使用しているため、少し調整する必要がありましたが、これは機能しました。
Set copyRng1 = Worksheets("Cutsheets").Range("A2")
If copyRng1 = "" Then
wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Locked = False
wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A2")
Else
wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A" & wbkVer.Worksheets("Cutsheets").Range("A65536").End(xlUp).Row + 1)
End If