• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のシートをまとめるとシートの順番がバラバラに。)

複数のシートをまとめる方法とシート順序のバラバラになる問題について

このQ&Aのポイント
  • 複数のブック内のシートを別の1つのブックのSheet1にまとめる方法を教えてください。実際には12個のブック内には「振替伝票1月」「振替伝票2月」などの共通のシートがあります。また、複数のブックのシートの順番を正しくまとめる方法も知りたいです。
  • 「現金」だけでなく「備品」「雑費」なども同じブックの別のシートにまとめたいです。調べてみた結果、解決策が見つからなかったため、お知恵をお借りしたいです。
  • 上記の問題について、サンプルコードを示しましたが、ファイルの順番に関する説明を見ても理解できませんでした。ご教授いただけますと幸いです。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

> Workbooks.Open MyDir & "\" & buf > の部分が実行エラーになります。 > BOOK1のSheet1のA1セルに「C:\Users\***\Desktop\振替え」と入力してます。 階層が深いところだと buf = "振替伝票" & MyFileCount & "月" & ".xls" Workbooks.Open MyDir & "\" & buf がダメみたいですね。 ちょっとファイルを開く回数が必要以上になっていたのでそれも修正して Sub Sample1() Dim MyDir As String, buf As String, MyFileCount As Integer, MySheetCount As Integer Dim MyFileName As String MyDir = Sheets("Sheet1").Range("A1").Value For MyFileCount = 1 To 12 buf = "振替伝票" & MyFileCount & "月" & ".xls" MyFileName = MyDir & "\" & buf Workbooks.Open MyFileName For MySheetCount = 1 To 3 Select Case MySheetCount Case 1 Sheets("現金").Range("A1:J1000").Copy Case 2 Sheets("備品").Range("A1:J1000").Copy Case 3 Sheets("雑費").Range("A1:J1000").Copy Case Else End Select ThisWorkbook.Activate With Sheets("Sheet1" & MySheetCount) 'With Sheets(MySheetCount) .Activate .Range("A65536").End(xlUp).Offset(1, 0).Select .Paste .Range("A1").Select End With Workbooks(buf).Activate Next MySheetCount Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False Next MyFileCount End Sub

mayumi040
質問者

お礼

ご回答ありがとうございます。 お返事が遅くなり、申し訳ございません。 出来ました。感謝です! 最後までわかりやすい回答をしていただきましてありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

寝ぼけてきました。 With Sheets("Sheet1" & MySheetCount) With Sheets("Sheet" & MySheetCount) にしてください。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

たびたび追加ですみません With Sheets("Sheet" & MySheetCount) を With Sheets(MySheetCount) にした場合 MyDir = Sheets("Sheet1").Range("A1").Value のところも MyDir = Sheets(1).Range("A1").Value もしくは MyDir = Sheets("実際のシート名").Range("A1").Value に変更してください。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

すみません iとjが違ってました 訂正です 紛らわしいのでiとjをやめました。 Sub Sample1() Dim MyDir As String, buf As String, MyFileCount As Integer, MySheetCount As Integer MyDir = Sheets("Sheet1").Range("A1").Value For MyFileCount = 1 To 12 For MySheetCount = 1 To 3 buf = "振替伝票" & MyFileCount & "月" & ".xls" Workbooks.Open MyDir & "\" & buf Select Case MySheetCount Case 1 Sheets("現金").Range("A1:J1000").Copy Case 2 Sheets("備品").Range("A1:J1000").Copy Case 3 Sheets("雑費").Range("A1:J1000").Copy Case Else End Select ThisWorkbook.Activate With Sheets("Sheet" & MySheetCount) .Activate .Range("A65536").End(xlUp).Offset(1, 0).Select .Paste .Range("A1").Select End With Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False Next MySheetCount Next MyFileCount End Sub もし、シートの左端のシートから順番にコピーされていけばいいのでしたら (シート名がSheet1とかでなくどんな名前になっても左端から順番にコピーされます) With Sheets("Sheet" & MySheetCount) を With Sheets(MySheetCount) に変更してください。

mayumi040
質問者

補足

ご丁寧な回答ありがとうございます。 お返事が遅くなってすいません。 Workbooks.Open MyDir & "\" & buf の部分が実行エラーになります。 書き込むブックはBOOK1という名前になってます。 BOOK1のSheet1のA1セルに「C:\Users\***\Desktop\振替え」と入力してます。 振替伝票1月~振替伝票12月のブックは「振替え」という名前のフォルダーに入れてDesktopに置いています。 このあたりが間違っているのでしょうか? よろしくお願いいたします。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

追加補足です。 Dim MyDir As String, buf As String, i As Integer ここに j As Integer を追加してください。忘れてました。

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Sub Sample1() Dim MyDir As String, buf As String, i As Integer MyDir = Sheets("Sheet1").Range("A1").Value For i = 1 To 3 For j = 1 To 12 buf = "振替伝票" & j & "月" & ".xls" Workbooks.Open MyDir & "\" & buf Select Case i Case 1 Sheets("現金").Range("A1:J1000").Copy Case 2 Sheets("備品").Range("A1:J1000").Copy Case 3 Sheets("雑費").Range("A1:J1000").Copy Case Else End Select ThisWorkbook.Activate With Sheets("Sheet" & i) .Activate .Range("A65536").End(xlUp).Offset(1, 0).Select .Paste .Range("A1").Select End With Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False Next j Next i End Sub こんな感じでいかがでしょう。

すると、全ての回答が全文表示されます。

関連するQ&A