エクセルで複数ファイルからコピーをする。
すみませんが、BOOK1に複数のファイルから部分的にコピーして貼り付けるという作業をしたいのですが、ど素人なもんでわかりません。マクロで記録したモノをいじってみてるのですが、根本的にコードが分かっていなくギブアップです。
やりたいことは、フォルダーの中の970305日報1、970305日報2、970306日報1、970306日報2のようなファイルが山ほどあるのですが、
この970305の日報1と2を開き、それぞれファイルの決まった列を順番にをBook1の行へ行列を入れ替えて貼りつけていき(1日が1行)保存して閉じてから、次の日970306のデータをBOOK1の2行目に貼り付けるということをしたいのですが、どなたか教えていただければ助かります。よろしくお願いします。
Sub Macro2()
Dim MyFile As String, MyPath As String
Dim wb As Workbook, tb As Workbook
Set tb = ThisWorkbook
MyPath = tb.Path & "\"
MyFile = Dir(MyPath & "*.xls", vbNormal)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Do While MyFile <> ""
If MyFile <> tb.Name Then
Set wb = Workbooks.Open(MyPath & MyFile)
With ActiveSheet
Windows("970305日報1.xls").Activate
Range("B34:B38").Select
Application.CutCopyMode = False
Selection.Copy
Windows("日報リスト.xls").Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("970305日報1.xls").Activate
Range("C33:C38").Select
Application.CutCopyMode = False
Selection.Copy
Windows("日報リスト.xls").Activate
Range("H1").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
ActiveWorkbook.Save
Windows("970305日報1.xls").Activate
ActiveWindow.Close
Windows("970305日報2.xls").Activate
Range("B31:B36").Select
Selection.Copy
Windows("日報リスト.xls").Activate
Range("N1").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("970305日報2.xls").Activate
Range("D31:D36").Select
Application.CutCopyMode = False
Selection.Copy
Windows("日報リスト.xls").Activate
Range("T1").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
ActiveWorkbook.Save
Windows("970305日報2.xls").Activate
ActiveWindow.Close
Windows("970306日報1.xls").Activate
Range("B34:B38").Select
Application.CutCopyMode = False
Selection.Copy
Windows("日報リスト.xls").Activate
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("970306日報1.xls").Activate
Range("C33:C38").Select
Application.CutCopyMode = False
Selection.Copy
Windows("日報リスト.xls").Activate
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
ActiveWorkbook.Save
Windows("970306日報1.xls").Activate
ActiveWindow.Close
-----------------------------------------
お礼
回答ありがとうございます。 挙げていただいたコードで、アクティブなファイルは閉じることができました。 が、どうやら私(が修正している)のコードだと、閉じたい方のファイルがアクティブになっている瞬間が無いようで、 (アクティブにせずともファイル操作が可能なのかはわかりませんが) 色々な場所にcsvFileCaption = ActiveWindow.Captionを仕込んで実行してみましたが、 結局目的のファイルは消せませんでした。 また、Dimの宣言は、As以降を書かなくても正常に動くんですね、 知りませんでした。
補足
すみません、できました。 コピーの直後に入れれば正常に動作し、目的のファイルを閉じることができました。 1行ずつ試したつもりでしたが、勘違いだったようです。 申し訳ありません。 投稿内容の修正方法がわからないので(不可能?)、 こちら「補足」の方に書かせていただきます。