- ベストアンサー
Excelマクロでデータをコピーして新しいブックに貼り付け、保存する方法
- Excelのマクロを使用して、選択したシートのデータをコピーして新しいブックに貼り付け、指定したブック名で保存する方法について説明します。
- コピー元のデータがブランクになるまで、以下の手順を繰り返します: 1. 選択したシートのAC(i)~CW(i)をコピー 2. 雛形となるブックを開く 3. 開いたブックのSheet1のB3~BU3に値をペースト 4. Sheet1のB3~BU3に書式をペースト 5. ブック名を指定して保存(ブック名は「シート名-i(桁指定3桁)」)
- 作成したいブック数が3000ファイル程度あるため、手作業では時間がかかります。マクロを使用して作業効率をあげることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
二つ欠陥があります。 (1)暗黙のオブジェクトを使っている。 (2)"AD(i)"は文字列なので範囲指定にならない。 Sub 処理() Dim 複写元シート As WorkSheet Dim 複写先ブック As Workbook Dim 複写先シート As WorkSheet Dim 行 As Long Dim 範囲 As String Dim 辺 As Long Set 複写元シート = ThisWorkbook.WorkSheets("Aエリア") 行 = 2 Do 行 = 行 + 1 範囲 = "AD" & CStr(行) If 複写元シート.Range(範囲).Value = "" Then Exit Do 範囲 = 範囲 & ":CW" & CStr(行) Set 複写先ブック = Workbooks.Open("雛形.xls") Set 複写先シート = 複写先ブック.WorkSheets(1) With 複写先シート 複写元シート.Range(範囲).Copy .Range("B3").PasteSpecial Paste:=xlPasteValues .Range("B3").PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False With .Range("B3:BU3") For 辺 = xlEdgeLeft To xlEdgeRight With .Borders(辺) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Next End With End With 複写先ブック.SaveAs "シート-" & Format(行, "0000") & ".xls" 複写先ブック..Close Loop End Sub 文字と変数を結合して正しい範囲指定にするには "AD" & CStr(行) のように数値データを文字列化する関数 CStrを使って結合させます。 範囲が分かっているのにSelect→Selectionはちょっと 無駄な感じですね。 暗黙のオブジェクトを使うのはバグの元なので、必ず どのブックのどのシートの範囲(Range)かを明示的に 書くべきです。