1 つのワークブックから別のワークブックに複数のセルをコピーする (範囲内ではない)

1 つのワークブックから別のワークブックに複数のセルをコピーする (範囲内ではない)

あなたの記事を見つけました「あるシートから別のシートに複数のセル(範囲内ではない)をコピーする」VBA マクロをコピーして貼り付け、非表示の行のセルを参照して、実行するボタンを割り当てました。同じワークブック内の 1 つのシートから別のシートにコピーすると、うまく機能します。問題は、ワークブックの 1 つのシート 1 (請求書) から別のワークブックのシート 1 (経過年数付き売掛金) にコピーする必要があることです。既存の VBA コードを調整して、これを行うことはできますか?

これらは、私の範囲に合わせてVBAマクロに加えた変更です。

wks1.Cells(use_row,1) = wks.cells (50,1)
wks1.Cells(use_row,2) = wks.cells (50,2)
wks1.Cells(use_row,3) = wks.cells (50,3)
wks1.Cells(use_row,4) = wks.cells (50,4)
wks1.Cells(use_row,5) = wks.cells (50,5)
wks1.Cells(use_row,6) = wks.cells (50,6)

答え1

もちろんです。必要なのは、他のブックへの参照 (サブ内の変数) を作成し、その側で受信シートを選択することだけです。

ここでは、最初の数行を置き換えることでこれを実現します。残りのコードはこれに依存します (その後、独自の変更が続きます)。

Dim wkb As Workbook,wkb2 as workbook
Dim wks as worksheet, wks1 As Worksheet
Set wkb = ThisWorkbook ' Or workbooks("SourceWorkbook.xlsm") if it's saved.
set wkb2 = Workbooks("OtherWorkbook.xlsx")
Set wks = wkb.Sheets("Sheet1") ' Name references are a little clearer.
Set wks1 = wkb2.Sheets("Sheet1")

最後に「set wkb2 = nothing」をもう一度追加することもできますが、これは実際にはあまり意味のない安全対策です。

いずれにせよ、比較的複雑な関数が必要になった場合は、基本的な VBA について少し勉強することをお勧めします。ルーチン全体を記述するわけではないとしても、少なくとも自分で許容できる変更を加えることはできます。たとえば、列が連続しているため、記述した部分はコピーペーストではなくループで実行できます。

関連情報