excelのマクロを使ってもとのシートのデータをコピーして新しいブックに貼り付けを行い、ブック名を指定して保存させることを繰り返したい。
excelのマクロで以下の作業が出来ないかと考えております。
1.選択したシートのAC(i)~CW(i)をコピー (i=3,n)
2.ブック『雛形』(コピー先のテンプレートブック)を開く
3.開いたブックのSheet1のB3~BU3に値をペースト
4.同様にSheet1のB3~BU3に書式をペースト
5.ブック名を指定して保存。(ブック名は"シート名""-""i(桁指定3桁)")
6.2~5を繰り返す。iはコピー元のデータがブランクになるまで繰り返す。
なお、コピー元のAC(i)~CW(i)はいくつかの結合セルとなっており、同シート内のB(i)~P(i)を参照して値を表示する関数を組んだデータとなっています。
作成したいブック数が3000ファイル程度になる為、手作業で行うには時間がかかりすぎるため何とか作業効率をあげたいと考えております。
操作を行ってみて記録したマクロを自分でいじってループさせられないかやっていますがうまくいきません。
Sub Macro1()
Dim i As Long
For i = 3 To 100
Sheets("Aエリア").Select
Range("AD(i):CW(i)").Select
Selection.Copy
Workbooks.Open Filename:="(雛形ファイル名).xls"
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B2:BU4").Select
Range("B4").Activate
Application.CutCopyMode = False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Range("AZ6").Select
ファイル名 = "(新規保存ブック頭文字)"
Application.Dialogs(xlDialogSaveAs).Show (ファイル名)
Next
End Sub
よろしくお願い致します。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/01/27 13:15
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
北九州市にあった「井筒屋ブッ...
-
WorkBooksをオープンさせずにシ...
-
シート3枚あるはずが1枚しか...
-
Excelでブックの共有を掛けると...
-
行、列の挿入がリンク先に反映...
-
【ExcelVBA】シートをそれぞれ...
-
エクセルで50行ごとに区切った...
-
Excel VBAでブックを閉じる時、...
-
EXECLの変更を保存せずにブック...
-
Excelで、複数ブックの複数シー...
-
エクセルで別ブックをバックグ...
-
リンク元ブックのPWが分からな...
-
VBA: ブックをアクティベイトで...
-
外部ブック参照が#REF!になって...
-
エクセルで参照しているデータ...
-
captionの値と実際の表示名が合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
VBA バックグラウンドで別ブッ...
-
エクセルで50行ごとに区切った...
-
エクセルで「ディスクがいっぱ...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルシートの一部を送りたい
-
エクセル2016です。「ブッ...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
複数ファイルから特定シートの...
おすすめ情報