- ベストアンサー
エクセル2013でファイルを一つにまとめる方法
- エクセル2013を使用して、複数のファイルを一つにまとめる方法について教えてください。
- 31個のBOOKを含む一つのファイルを作成し、各BOOKのデータをそれぞれの日付のシートに貼り付けたいです。また、計算式が入ったデータを値にして貼り付ける方法も教えてください。
- 急いでいるため、既出の質問かもしれませんが、お教えいただけると助かります。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
シート名デイリー(1)の中でセルの結合を使っている場合こっちを使ってください。 まず集計ブックを名前をつけて保存して下さい。集計2などなんでもいいです。 シート名1~31を削除してください。 こちらはシートをコピーしてから値を貼り付けているので、セルの結合を使っていてもエラーはでないと思います。 マクロが思い通りの動作をしたら基の集計ブックに上書き保存して下さい。 Dim myPpath As String, myMonth As String, myFile As String Dim INP As Integer Dim inpFile As Worksheet Sub Macro1() myPpath = ThisWorkbook.Path & "\" myMonth = InputBox("作成年月を入力して下さい。") For INP = 1 To 31 myFile = Dir$(myPpath & myMonth & "." & Format(INP, "00") & "*.xls") On Error GoTo Line: Workbooks.Open Filename:=myPpath & myFile Set inpFile = Workbooks(myFile).Worksheets(2) inpFile.Copy After:=Workbooks(ThisWorkbook.Name).Sheets(INP) Cells.Copy Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Workbooks(myFile).Close False Worksheets(Worksheets.Count).Name = myMonth & "." & Format(INP, "00") Range("A1").Select Next INP Line: Worksheets(1).Select End Sub
その他の回答 (6)
- mar00
- ベストアンサー率36% (158/430)
>その場合は、 Set inpFile = Workbooks(myFile).Worksheets(1)を Set inpFile = Workbooks(myFile).Worksheets(2)にすればよいのでしょうか。 その通りです。 今になって気になってきたのですが、シート名デイリー(1)の中でセルの結合などは使っていないでしょうか。 使っていればエラーがでますので補足して下さい。
- mar00
- ベストアンサー率36% (158/430)
>sheet1の名前は実際はデイリー(1)という名前でした。 sheet1という事だったので各ブックの1番前(1番左)にあると思ってマクロを作っています。 デイリー(1)という名前なら Set inpFile = Workbooks(myFile).Worksheets(1)を Set inpFile = Workbooks(myFile).Worksheets("デイリー(1)")に修正して下さい。 >教えてくださったものの名前を変更しようとしましたが、うまくいきません。 ご質問の内容ですと集計ブックには1番最初に集計という名前のシート、 次に2014.07.01、2014.07.02、・・・・2014.07.31まで名前のついたシートがあると思ったのですが。 2014.07.01→1、2014.07.02→2、・・・・2014.07.31→31とシート名を修正できませんでしょうか。 シートの名前の上で右クリック→名前の変更またはシートの名前の上でWクリックで変更できるようになると思います。
お礼
ありがとうございます。 シート名は2014.07.01→1などに変更しました。 ちなみに今回の対象のシートは左から2番目にすべてあります。 その場合は、 Set inpFile = Workbooks(myFile).Worksheets(1)を Set inpFile = Workbooks(myFile).Worksheets(2)にすればよいのでしょうか。
- mar00
- ベストアンサー率36% (158/430)
回答No.3です。 "*.xlsx"は"*.xls"に修正して下さい。
お礼
ありがとうございます。 修正しましたがうまく動作しません。 教えていただいてから、ファイル名などは、自分で使用しているものに変更しようと思ってましたが それがいけなかったかもしれません。 集計のシート名は1.2.3というように変更いたしました。 31個あるブックの中のsheet1ではなく。(1)デイリーという名前でした。 これを元にお手数ですが、再度教えていただけますでしょうか。 よろしくお願いいたします。
- mar00
- ベストアンサー率36% (158/430)
7月だけでなくこれから毎月作業を行うものとしてます。 まず集計ブックのシート名をすでに入力しているようですが1日は1、2日は2のように31まで修正して下さい。 7月だけしか作業を行わないのであれば修正しなくてもいいです。 毎月作業を行うのであれば、マクロを実行するとシート名も変わるようになっているので 9月や11月のように不要なシートが出てくる月もあるのでその時は削除するなりして下さい。 同一フォルダ内には名前の違うものは混在させないで下さい。 2014.08.01大阪(1)のような日付だけが違う名前のブックはOKですが、2014.07.01大阪(2)や 2014.07.15東京のように名前の違うものは同一フォルダにあると正しく動作しない可能性があります。 混在している場合は新しいフォルダをつくって対象とするブックと集計ブックを移動させてから 集計ブックからマクロを実行して下さい。(集計ブックと対象ブックが同一のフォルダにあればOKです。) マクロを実行するとインプットボックスが出てくるので、7月の場合は2014.07と入力して下さい。 Dim myPpath As String, myMonth As String, myFile As String Dim INP As Integer Dim inpFile As Worksheet Sub Macro1() myPpath = ThisWorkbook.Path & "\" myMonth = InputBox("作成年月を入力して下さい。") For INP = 1 To 31 myFile = Dir$(myPpath & myMonth & "." & Format(INP, "00") & "*.xlsx") On Error GoTo Line: Workbooks.Open Filename:=myPpath & myFile Set inpFile = Workbooks(myFile).Worksheets(1) inpFile.Cells.Copy Workbooks(ThisWorkbook.Name).Worksheets(INP + 1).Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Workbooks(myFile).Close False Worksheets(INP + 1).Name = myMonth & "." & Format(INP, "00") Next INP Line: Worksheets(1).Select End Sub ご希望通りの動作をするといいのですが。
お礼
ご回答ありがとうございます。 (1)は紛らわしいので消してしまいました。 sheet1の名前は実際はデイリー(1)という名前でした。 教えてくださったものの名前を変更しようとしましたが、うまくいきません。 聞いてばかりで申し訳ございませんが、よろしくお願いいたします。
- satoron666
- ベストアンサー率28% (171/600)
http://www.forest.impress.co.jp/article/2006/06/26/excels.html こういった便利なツールを利用したほうが早いと思います。
- satoron666
- ベストアンサー率28% (171/600)
マクロ組むにも少し時間がかかりそうですよ? 集計というブックは、質問者様が自分で作るのですか? それとも、VBAで作れれば良いという話でしょうか。
お礼
ありがとうございます。 VBA作ればよいという話でございます。 よろしくお願いいたします。
お礼
うまく作動しました。 ありがとうございます。 本当に助かりました。