• 締切済み

ひと月分のシートを新ブックにまとめたい

当方、業務でExcel2003を使用しています。 タイトルに書いたように、一月分のエクセルのシートをマクロで新ブックを作成し、纏めたいと考えています。 残念ながら私はVBAについては最近知った程度ですのでほぼ判りません。 どなたか教えていただけるとありがたいです。 【PC】 OS→XP Excel→2003 【やりたいこと】 添付画像の図3-1と図3-2のような結果が欲しいです。 具体的に申し上げますと、 日々、添付画像の図1のようなフォーマットで表に入力する業務があります。 1日分で5シートほどになり、月にすると70シートぐらいの量になります。 この一月分のシートは日毎にシート名が振られており、 例えば、6月6日であれば0606-1、0606-2、0606-3、0606-4、0606-5というふうになっています。 また、予め「まとめ」フォルダのConclusion.xlsというブックにまとめられています。 シートの順番も6月分であれば、 0601-1、0601-2、0601-3・・・・・・0631-3、0631-4、0631-5となっています。 VBAで図1の表(1)D5~M14(緑の背景色部分)を拾い上げ、 同「まとめ」フォルダ内に新ブック(例:6月分まとめ.xls)を作成し(図2-1)、 「自工場まとめ」シートにセルA1から昇順で羅列し、 おなじく図1の表(2)D17~M26(青の背景色部分)を拾い上げ、 同「まとめ」フォルダ内のブック名6月分まとめ.xlsに、 新シートを作成(シート名:他工場まとめ 図2-2)、セルA1から昇順で羅列。 なお、図3-1と3-2には1行目に商品名、商品コード・・・・とありますが、 なくても構いません。 このようなマクロですが、出来る方いらっしゃいますでしょうか。 よろしくお願い致します。

みんなの回答

回答No.2

出来ますけど。 #1さんがおっしゃる「説明不足」に少々加えさせてください。 それを「ゼロから作りあげてくれ」ってことですか? 以上について説明が足りません。補足下さい。

satoshyyyy
質問者

補足

daredakisama様 回答ありがとうございました。 説明が足りず申し訳ございませんでした。 ご回答いただいたように作り上げていただければ万々歳でした。 しかし、keithin様からヒントを頂けたので少し自分でもやってみようと思います。 お時間を割いて頂きましてありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

【説明不足の指摘】 Conclusion.xlsには当月1日の1枚目から当月末日の最後のシートまでのシート「以外のシートは全く一枚も含まれていない」とします 青の表と緑の表の具体的なセルの記入内容(「データの意味」じゃありませんので間違えない事)が不明なので、実際には「コピーする必要が無い行」もあると思われますが、判断する材料が無いので「青と緑のすべての行をコピーする」ことにします。この点はあなたの実際のエクセルに即した方法で、次のステップとしてご自分で改良してください。 どのようにマクロを運用したいのか不明のため、conclusion.xlsにマクロを持たせて実行する事にします 「昇順に並べる」の意味が不明のため、単純に日付とシートの古い方から上から順に並べていくだけにします またご質問で掲示された画像に何か補足を書かれているようですが、読めませんのですべてスルーします 【具体的な手順】 conclusion.xlsを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する sub macro1()  dim w as workbook  dim i as long ’移動先の作成  set w = workbooks.add  w.worksheets(1).name = "自工場まとめ"  w.worksheets(2).name = "他工場まとめ" ’転記  for i = 1 to thisworkbook.worksheets.count   w.worksheets(1).cells(i * 10 - 9, "A").resize(10, 10).value = thisworkbook.worksheets(i).range("D5:M14").value   w.worksheets(2).cells(i * 10 - 9, "A").resize(10, 10).value = thisworkbook.worksheets(i).range("D17:M26").value  next i ’名前を付けて保存  w.saveas filename:=thisworkbook.path & "\" & val(left(thisworkbook.worksheets(1).name, 2)) & "月分まとめ.xls" end sub

satoshyyyy
質問者

補足

keithin様 回答ありがとうございます。 また、お時間を割いてマクロを教えていただき、重ねてお礼申し上げます。 説明不足の件および画像の件、申し訳ありませんでした。 keithin様の指示通り、回答いただいたマクロを元に自身で勉強し手を加えていこうとおもいます。

関連するQ&A

  • 複数のブックのデータを一つのブックにまとめたい

    http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page1.htm ↑の 7. 指定したフォルダ内にあるExcelファイルを検索して開く の部分のマクロを利用して、集計.xlsというブックで、複数のブックを開くようにしましたが、そのブックを開いた時にそのブックのSheet2の中のデータのみコピーして、集計.xlsに貼り付けたいのですが、どのようにすればよいのか困っています。 指定したフォルダの中には、回答01.xls 回答02.xls ・・・と16個のブックがあります。順番に開いてコピーをするときに、どのようにブック名とシート名を指定すればよいのかわからず困っています。 何か参考になるものがあれば教えてください。 よろしくお願いします。

  • シートを一つのブックにまとめるには

    こんばんは ただいま夜中の1:20です。 マクロを考えているんですが、うまくうごかないです。 みなさまの知恵を拝借させてください。  デスクトップの経理フォルダに 仕入.xlsx 売上.xlsx まとめ.xlsm があります。  仕入の2月シート、売り上げの2月シートをまとめxlsmにコピーしたいのですが マクロの記述はどうなりますでしょうか? 自分なりにつくってみたのですが、経理フォルダを動かすとうまく作動しなくなりました。 thisworkbook.path をどこかにいれれば動くようですが、どこにいれればよいやら。 希望する動作としては まとめ.xlsm のシート1に記載されている ファイル名とシート名に該当するものを まとめ.xlsmにコピーできればと思ってます。

  • 複数ブックにあるシートを1つのブック束ねるマクロを汎用的に改良したい

    【質問編です。回答#1に、元コードを掲示いたいます】 以下は、1つの新規ブックに、特定フォルダにある不特定多数の ブックのSheet1を次々と束ねるマクロで、別の掲示板で教わりました。 よく使うので、大幅に汎用性をもたせたいのです。 (要望1) 束ねた際に、シート名をブック名にセットしたい。 (例:C:\temp\に、Book1.xls、Book2.xls、Book3.xls とあったら、  束ねられたシート名はBook1、Book2、Book3をシート名) (要望2)CSVやTXTを束ねる場合、8行目のxlsをcsvに書き換えなければ ならないので、ここは、その都度ダイアログで聞いて欲しい。 (規定値にxlsが入力されたInputBoxとか、XLS、CSVを選択させるラジオボタン等。) (要望3)7行目の代わりに↓のような「フォルダの参照」ダイアログを表示し、 毎回7行目を書き換えないで済むようにしたい。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html その他、このような仕様ならより汎用性が高いだろうと思われるもので 多機能化いただくのはとってもうれしいです。 どうぞ、よろしくお願い致します。

  • 他のブックから特定のシートを自ブックに取り込みたいのですが

    目的は月末に提出される従業員からの当月月報を簡便に集計する事前準備で、内容は、従業員が提出する月報.xlsの集積フォルダ「月報管理」に保存された複数の月報.xlsを個々に開き、就業時間が記載された対象sheetを予め作成した自ブック「月報管理.xls」にそれぞれコピーし、個々に開かれた月報.xlsを一括して閉じるまでの作業をマクロ化出来ないかということです。 初心者のため、こちらのようなサイトを多々巡り、途中までは必要部位を真似て作成したのですが、選択したシートを自ブックにコピーする段階で先に進めなくなりました。 恐れ入りますが、何方様かご教授いただけませんでしょうか? また、同様の作業を更に簡便なマクロに置き換えらても構いませんので、何卒、宜しくお願い致します。 参考までに、従業員が提出する月報は作成する際のマクロによってファイル名とsheet名を同一にしております。 例) Aさん*月分.xls 内に Aさん*月分sheet含む Bさん*月分.xls 内に Bさん*月分sheet含む Cさん*月分.xls 内に Cさん*月分sheet含む ↓ 自ブックに設定したマクロです ↓ Private Sub CommandButton1_Click() '1,ファイル名の取得 Dim myFolder As String 'ドライブ、フォルダ Dim filename As String 'ファイル名 myFolder = "C:\Documents and Settings\nobita\デスクトップ\月報集計" filename = Dir(myFolder & "\" & "*.xls") Do While filename <> "" filename = Dir() Loop '2,フォルダ内「月分」が含まれるファイルを開く Dim i As Integer With Application.FileSearch .NewSearch .LookIn = myFolder .filename = "*月分*.xls" .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Workbooks.Open filename:=.FoundFiles(i) Next Else MsgBox ("該当ファイルが見つかりません。") End If End With '3,開いたファイル内の共通対象シート(*月分*)を選択 Dim myWS As Worksheet For Each myWS In Worksheets If myWS.Name Like "*月分*" Then   If ActiveSheet.Name Like "*月分*" Then myWS.Select (False) Else myWS.Select End If End If Next '4,3で選択されたシートを自ブックにコピー '5,2で開いたファイルを閉じる End Sub

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • 変数が混じる名前のブックへのシート移動 マクロ

    いつもお世話になっております。 マクロ実行用Book=A.xls マクロ1で作成したファイル=●●日報.xls(●●の部分は、A.xls内のセル番地"AB2"にある文字列で、毎回変わります) マクロ2で作成したファイル=Book1.xls (1)A.xlsにて、●●日報.xlsを作成し、保存します(●●日報.xlsは保存後、閉じています) (2)マクロ2を実行し、Book1.xlsを作成します。 (3)Book1.xlsのシート(このブックにはシートは1枚のみです)を、A.xlsのブックの末尾に移動し、●●日報.xlsを上書保存する。 この場合、マクロのコードはどう書くのが適切なのでしょうか。 マクロ初心者のため、どなたかご教示いただけましたら幸いです。

  • excel:あるsheet Bからその中の情報で別のsheetを表示する。

    (問題概要)あるsheet Bからその中の情報で別のsheetを表示する。 Mydocの中のAというフォルダに、ExcelのBOOKが複数個(A1~A5とB)あり、また各bookには複数個のシートが入っています。 ブックBの中に表形式で   B.xlsのsheet1   (表) 各book名 各sheet名 A1.xls     A1-1sheet  A1.xls A1-2sheet A1.xls A1-3sheet A2.xls A2-1sheet ~ A5.xls   A5-1sheet A5.xls   A5-2sheet などと入っています。 やりたいことは、この表のsheetの所などをクリックしたときに(方法はプログラムを作り安い方法でよいのですが)、当該シートを開き表示するようにしたいが、マクロがいいですか。その場合マクロはどんなふうに書けばいいでしょうか。 またBの表を作るため、BOOK内のsheet名の情報を採集する(コピー)方法はありますか

  • Excel マクロで複数ブックのデータを一つのブックにまとめたい

    マクロ初心者です。 フォーマットの同じ複数のブックのセルをコピーし、 新しいブックに羅列したいのですが、 ブック数が多く、手作業では効率が悪く、困っています。 例えば・・・Book001.xls、Book002.xls、二つのブックがあります BooK001.xls  ABCD 1  * 2  * 3  * 4  * Book002.xls  ABCD 1  + 2  + 3  + 4  + これを、新しいブック(All.xls)に  ABCD 1 *+ 2 *+ 3 *+ 4 *+ といったように、コピーしたいのですが、マクロ初心者のため、お手上げ状態です。 条件は、 ・フォルダにBookXXX.xls(XXXは001~の連続した番号)という名のブックが入っている ・BookXXX.xlsは全て同じフォーマット マクロの構文はもちろん、設定の仕方も教えていただけないでしょうか? よろしくお願いします。

  • VBA(Excel):他のブックからシートごと取込みたい

    他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。 以下を例として、ご回答いただけると幸いです。 よろしくお願いします。 ---------------------------------- 次の3つのブックが存在するとします。 a.xls b.xls c.xls a.xlsにはシートが1つだけあり、シート名は"sheet1"です。 b.xlsにはシートが1つだけあり、シート名は"sheet1"です。 c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。 a.xlsにVBAマクロを作り、a.xls上で実行させて、 a.xlsの"sheet1"は残したまま、 b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、 a.xlsのシートとして取込み、 同様に今度は、 a.xlsの"sheet1"、"sheet1-b"は残したまま、 c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、 c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、 c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、 a.xlsのシートとして取込み、 最終的に、a.xlsには、 "sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c" の、5つのシートが存在するようにしたいのです。 (各シート上のデータは、a.xlsの各シートとしてすべて移行されている) ----------------------------------

  • フォルダ内の特定ブックだけを1つのブックにまとめる

    はじめましてマクロ超初心者です。 会社のシステム(ツール?)で同じフォルダに1案件につき2つのブックが作成されます。 毎回約30案件、すなわち同じフォルダに60ブックあります。 (1)同じフルダ内に60ブック (2)その内、同じ案件が2つ。ブック名「1_****」と「2_****」 ****は毎回かわる (3)ブックには2つのシート。シート名「1」と「2」 (4)ブック「1_****」のシート「1」が開いた状態、ブック「2_****」のシート「2」が開いた状態になってる (5)必要なのはブック「1_****」のシート「1」とブック「2_****」のシート「2」 この「1_****」のシート「1」と「2_****」シート「2」を「1_****」にまとめる作業を毎回手作業でやっています。これをなんとかマクロで出来ないでしょうか?同じフォルダにある複数ブックをまとめるマクロは見つけました、複数=全てのブックに実行されてしまいます。フォルダ内の特定のブックをまとめるマクロがみつからず。。。どなたかご教授して頂けませんか?

専門家に質問してみよう