
お世話になっております。
複数の各シートに行を追加したいです。
コードを考えてみました。
以下のコードで相違ないでしょうか。
Sub Test2()
Dim Wb1 As Workbook, Wb2 As Workbook
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim LastRow1 As Long, LastRow2 As Long
Dim sheetNames As Variant
Dim i As Integer
' ソースのWorkbookを定義
Set Wb1 = Workbooks("Book1.xlsm")
' ターゲットのWorkbookを定義
Set Wb2 = Workbooks("Book2.xlsm")
' シート名の配列を定義
sheetNames = Array("Sheet2", "Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet10", "Sheet11", "Sheet12", "Sheet13", "Sheet14")
' 各シートにループ
For i = LBound(sheetNames) To UBound(sheetNames)
' ソースのWorksheetを定義
Set Ws1 = Wb1.Sheets(sheetNames(i))
' ターゲットのWorksheetを定義
Set Ws2 = Wb2.Sheets(sheetNames(i))
' 最終行を見つける
LastRow1 = Ws1.Cells(Ws1.Rows.Count, "C").End(xlUp).Row
LastRow2 = Ws2.Cells(Ws2.Rows.Count, "C").End(xlUp).Row
' コピーと挿入
Ws1.Rows("2:" & LastRow1).Copy
Ws2.Rows(LastRow2 + 1).Insert Shift:=xlDown
' クリップボードをクリア
Application.CutCopyMode = False
' オブジェクト参照を解放
Set Ws1 = Nothing
Set Ws2 = Nothing
Next i
' オブジェクト参照を解放
Set Wb1 = Nothing
Set Wb2 = Nothing
End Sub
ご回答をお待ちしております。
どうぞ宜しくお願い申し上げます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
実際に実行してみて、望んだ結果が得られればそれで良いと思います。
上記のマクロは、以下のことを前提に作成されていると理解しました。
1.マクロを格納しているブックは、Book1.xlsmでもBook2.xlsmでもない。それ以外のブックである。
2.このマクロを実行時、Book1.xlsmとBook2.xlsmは、手動でオープン済みである。
そうであれば、問題ありません。
No.1
- 回答日時:
このVBAスクリプトは、Book1.xlsm から Book2.xlsm へ複数のシートのデータをコピーして挿入するためのものです。
スクリプトは以下の手順に従っています:Book1.xlsm と Book2.xlsm のワークブックを開きます。
Sheet2 から Sheet14 までの各シートに対してループ処理を行います。
各シートの列Cの最終行を見つけます。
Book1.xlsm の2行目から最終行までのデータをコピーし、Book2.xlsm の最終行の次に挿入します。
クリップボードをクリアして、オブジェクト参照を解放します。
スクリプトは正しく機能しているように見えますが、Application.CutCopyMode = False の後に Application.Wait または DoEvents を追加することで、挿入操作が完了するのを確実に待つことができます。これは特に大量のデータを扱う場合に有効です。
また、エラーハンドリングを追加することで、スクリプトの堅牢性を高めることができます。例えば、指定されたシート名が存在しない場合や、ワークブックが開かれていない場合にエラーメッセージを表示するなどです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
エクセルVBA Ifでシート名が合...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
Excel VBA で自然対数の関数Ln...
-
ExcelVBA シート名を複数セルか...
-
EXCEL(VBA)でシート保護がかか...
-
Excel チェックボックスにチェ...
-
エクセルで通し番号を入れてチ...
-
XL:BeforeDoubleClickが動かない
-
エクセルの絶対参照の一括操作...
-
エクセルのマクロでアクティブ...
-
Flashの再生方法
-
Excel VBAシートの色を一気に変...
-
エクセルのシート名変更で重複...
-
Excel VBA プロシージャの種類...
-
別のシートから値を取得するとき
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
エクセルVBA Ifでシート名が合...
-
エクセル・マクロ シートの非...
-
シートが保護されている状態で...
-
シート削除のマクロで「delete...
おすすめ情報