【やりたいこと】
アンケートを取った500個のxlsファイル(ファイル名は"001.xls"~"500.xls"まで、単純に規則的に数字が増えていく)があります。500個のファイルの中身(アンケートのフォーマット)は全て同じで、回答者の「答え」は"アンケート"というシートの"P6:S6"と"A70:AX70"という範囲に数列になって入っています。
この500個のファイルに対して、
(1)シートにはPassword付きの保護がかけてあるので、アンケート回答ファイルを開いたら保護を解除する
(2)"アンケート"というシートの、ある範囲(回答部分の"P6:S6"と"A70:AX70")をコピーし、集計用の別ファイルへ貼り付けていく(×500人分)
(3)集計用の別ファイルに貼り付けるときは、1人目の"P6:S6"範囲の貼り付け先は"D4"、"A70:AX70"の範囲の貼り付け先は"I4"で、2人目はそれぞれ"D5"と"I5"、3人目は"D6"と"I6"、・・・とずらしていきます。(コピー元のセルは同じで、コピー先のセルがずれていきます)
(4)コピー貼り付けが終わったアンケート回答は、上書き保存をせずに終了する(再び保護がかかった状態に戻して終了する)
という操作を行うマクロを組みたいのです。
【つまづいている現状・・・】
とりあえず1人目の分だけ記録したマクロは以下の通りです。力技でやろうとすれば、"001.xls"を001~500まで、"D4"と"I4"を4~503まで、ずっと書き変えていけばいいんだと思いますが・・・。500人分を簡単にスッキリとまとめることはできませんでしょうか?
何卒よろしくお願い致します。
--------------------------------------------------------------
Workbooks.Open Filename:="D:\AAA\001.xls"
Sheets("アンケート").Select
ActiveSheet.Unprotect Password:="1234"
Range("P6:S6").Select
Selection.Copy
Windows("集計用ファイル.xls").Activate
Range("D4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("001.xls").Activate
ActiveWindow.SmallScroll Down:=8
Range("A70:AX70").Select
Application.CutCopyMode = False
Selection.Copy
Windows("集計用ファイル.xls").Activate
Range("I4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("001.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.Close
--------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
セオリーとしては
Dim i As Long
For i = 1 To 500
With Workbooks.Open("D:\AAA\" & Format$(i, "000") & ".xls", UpdateLinks:=0, ReadOnly:=True)
'コピー処理
.Close savechanges:=False
End With
Next
こんな感じでFor...Nextステートメントで1Bookずつ開いてコピー...のLoop処理にすればスッキリまとめる事ができます。
ですが今回のようにBook名、シート名、セルアドレスなどが、固定&規則性がある変動値の場合は
ダイレクトに参照数式をセットする事もできます。こっちが速いです。
Sub test2()
Const f1 = "='D:\AAA\["
Const f2 = ".xls]アンケート'!"
Dim f As String
Dim i As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
With ActiveSheet
For i = 1 To 500
f = f1 & Format$(i, "000") & f2
.Cells(i + 3, 4).Resize(, 4).Formula = f & "P6"
.Cells(i + 3, 9).Resize(, 50).Formula = f & "A70"
Next
With .Range("D4:G503")
.Copy
.PasteSpecial xlPasteValues
End With
With .Range("I4:BF503")
.Copy
.PasteSpecial xlPasteValues
End With
End With
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
※存在しないBookがあったり、フォルダ名を間違ったりすると[値の更新]ウィンドウが表示されます。
変更が必要な式の数量分繰り返されますので、設定には気をつけてください。
もしそうなった場合、[Ctrl]キーと[Break]キーを同時押しした後に[Esc]キー。...でデバッグできます。
教えていただいた2つ目のマクロでバッチリでした!!
大変助かりました。そしてとても勉強になりました。
ありがとうございました!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル XCOPYで上書き...
-
xcopyでのバッチコピー方法でコ...
-
同じファイル名 上書きしないフ...
-
バッチファイルのコピーで
-
Delphiによるファイルのコピー
-
ゴミ箱に移動するような削除を...
-
マインクラフトPCをプレイしよ...
-
Vba初心者です。下記のコード助...
-
エクセルのハイパーリンクがコ...
-
frxファイルの役目
-
賃貸アパートの退去の時の返却...
-
特定のエクセルファイルが止ま...
-
Excel VBAで値コピーが使用でき...
-
アクセス クエリを別のファイ...
-
PDFファイルを枚数指定してコピー
-
bat 同名ファイルコピー時にリ...
-
[エクセル]コピーするとオブジ...
-
バッチファイル 別ファイルにリ...
-
vbsでファイルやフォルダのコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
同じファイル名 上書きしないフ...
-
Vba初心者です。下記のコード助...
-
xcopyでのバッチコピー方法でコ...
-
エクセル2010、図が大きすぎま...
-
バッチファイル 別ファイルにリ...
-
vbsでExcelのシートをコピーす...
-
アクセス クエリを別のファイ...
-
[エクセル]コピーするとオブジ...
-
パワポでスライドをコピーでき...
-
bat 同名ファイルコピー時にリ...
-
エクセルVBAで開いているファイ...
-
FTPとファイルコピーの違いにつ...
-
ファイルサーバ上のファイルが...
-
ファイルをコピーできない
-
開いている別のファイルにExcel...
-
FSO.CopyFileでのエラー無視方法
おすすめ情報