• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelのマクロをつかったコピー)

Excelマクロでデータをコピーして新しいブックに貼り付け、保存する方法

このQ&Aのポイント
  • Excelのマクロを使用して、選択したシートのデータをコピーして新しいブックに貼り付け、指定したブック名で保存する方法について説明します。
  • コピー元のデータがブランクになるまで、以下の手順を繰り返します: 1. 選択したシートのAC(i)~CW(i)をコピー 2. 雛形となるブックを開く 3. 開いたブックのSheet1のB3~BU3に値をペースト 4. Sheet1のB3~BU3に書式をペースト 5. ブック名を指定して保存(ブック名は「シート名-i(桁指定3桁)」)
  • 作成したいブック数が3000ファイル程度あるため、手作業では時間がかかります。マクロを使用して作業効率をあげることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.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)かを明示的に 書くべきです。

関連するQ&A