- 締切済み
マクロで複数ブックのデータを一つのブックにコピー
マクロ超初心者です。 1つのフォルダの中に複数のbook(sheetも複数)があります。 これを新しい1つのbookにまとめたいです。 sheetは「bookを開いた時に表示されるsheetだけ」を新しいbookにまとめたいです。 どなたかの回答に下記マクロがありました。 Sub consolid() Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く wb.Close '開いたブックを閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックをコピーしましました。" End Sub このマクロを使わせていただき、 これでいける!と思ったのですが、255文字以上のコピーが出来ません。 どのようにすればよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
単純なシートのコピーは、シート名の衝突、名前定義の衝突等々、必ずしも思ったとおりのことができるわけではない、、、 それと、元ネタのwb.Close、コレは(False)、と明示しておいた方が安全でしょう。 Copyのトコだけ変更するだけだと思うが、一応Open~Closeまでのコードは、こんなカンジ?? 'Option Explicit Sub Taste() ’~~~ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 ’wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く Activesheet.Copy After:=mb.Sheets(mb.Sheets.Count) 'wb.Close '開いたブックを閉じる wb.Close (False) ’~~~ デドコはコレ? デッドコピーは止めた方がイイのでは、、、 【Excel 2003】複数のブックのシートを一つのブックにコピーにしたい http://okwave.jp/qa/q2198774.html
お礼
さっそくありがとうございます。 やってみたのですが、255文字以上が やはり切れてしまいます。 元の質問はご指摘の通りです。 基本を理解したら、改良したいと思っています。