エクセル VBA 57 複数ブックデータを一つにまとめる処理について詳しく解説します! Dir関数についても説明あり。

Поделиться
HTML-код
  • Опубликовано: 3 дек 2024

Комментарии • 99

  • @INT2007RR
    @INT2007RR 2 года назад +1

    大いに参考になりました。ありがとうございました。

  • @kanemittu
    @kanemittu Месяц назад

    とても勉強になり、ありがとうございます。
    一つ質問なのですが、全く同じように作ったのですが、『ファイルがあるなら実行』の後データがありませんになってしまうのですが、何が原因かわからず、陥りやすいミスとかありますか? 6:46

    • @メンタエクセル
      @メンタエクセル  Месяц назад +1

      そうなんですね!もし可能ならコード載せていただけますか?

    • @kanemittu
      @kanemittu Месяц назад

      drive.google.com/file/d/1E8J6v5fS1mSAhhsnJGooT1kjXNYfrzxV/view?usp=drivesdk
      分かりますか?

  • @みなはるチャンネル
    @みなはるチャンネル 2 года назад +1

    workbooks.openをそのまま変数に入れるところと、rows.countが勉強になりました。

    • @メンタエクセル
      @メンタエクセル  2 года назад

      お役に立てれて嬉しいです☺コメントありがとうございます!

  • @tomiy9234
    @tomiy9234 Год назад +2

    以前から複数ファイルを一つにまとめるVBAが知りたかったのですありがとうございます。 何回も視聴してやっとなんとかできました。 完全には理解しきれていませんが自分でも動かせることが出来ました。 便利に使えそうです。

    • @メンタエクセル
      @メンタエクセル  Год назад

      ありがとうございます!VBA便利ですよね!あとパワークエリも凄くおすすめですので是非見てみてください♪

  • @こん-s4e
    @こん-s4e 2 года назад +1

    恐ろしく丁寧な説明ですね😂
    3年前に知りたかったです。
    ありがとうございます😂

    • @メンタエクセル
      @メンタエクセル  2 года назад +1

      ありがとうございます!
      モチベーション上がります!
      もっと良い情報を届けられるよう頑張ります!

  • @おけけ資格勉強中
    @おけけ資格勉強中 Год назад +1

    一つのブックを分割し指定したフォルダに指定した名前で保存するマクロの動画を視聴したいです。
    既に作成されているのかもしれませんが、うまく見つけることができませんでした。

    • @メンタエクセル
      @メンタエクセル  Год назад

      検討させていただきます!コメントありがとうございます!

    • @おけけ資格勉強中
      @おけけ資格勉強中 Год назад

      @@メンタエクセル
      ありがとうございます。
      是非よろしくお願い致します

    • @おけけ資格勉強中
      @おけけ資格勉強中 Год назад +1

      考えてみたんですが、正しいかどうかご教示いただきたいと思います。
      オートフィルターの動画を見てたところ、下記のような流れになるのかなと思ったんですがいかがでしょうか。
      for ステートメントで繰り返しの指示をする
      オートフィルターの解除と設定をし、コピーする
      新しいブックを立ち上げ、そこに新しいシートを追加する
      その追加したシートにコピーしたデータを貼り付ける
      名前をつけて保存し閉じる
      next

    • @メンタエクセル
      @メンタエクセル  Год назад

      そうですね!おっしゃる通りです!

    • @おけけ資格勉強中
      @おけけ資格勉強中 Год назад

      @@メンタエクセル
      そうなんですね!
      わかりました!ありがとうございます

  • @宮崎拓弥-m6i
    @宮崎拓弥-m6i 2 года назад +1

    とても丁寧で分かりやすかったです。

  • @mike3rd
    @mike3rd 4 месяца назад

    最近VBAを始めた40代中盤の頭が固くなった男です。
    それでも非常にわかりやすかったです。
    さて、本件の応用でしょうか?、1ブックに複数シートがありそれもすべて別のブックにまとめる場合です。
    今回のお題に即すなら、データ元の各ファイル名が「1組」ではなく「1年」「2年」で各ファイルのシート名が
    「1組」「2組」となっている状況です。
    一旦1つのシートに纏める、各シートをバラしてブック化する、という方法ではなく「ブックを開き、1シートずつ処理して
    次のシートへ移動し全シートを終えたらブックを閉じ次のブックへ移動」をループという流れです。
    すでに動画を出されていたら申し訳ありませんがご教授お願い致します。

  • @chanoman1203
    @chanoman1203 Год назад +1

    とても参考になりました。ありがとうございます。1点質問ですが、開くファイルにパスワードが掛かっている場合(パスワードは知っている)どのように開くのでしょうか。

    • @メンタエクセル
      @メンタエクセル  Год назад +1

      こんな感じでいけます!
      Sub パス付ブック開く()
      Workbooks.Open Filename:="C:\User~\開くブック.xlsx", Password:="angoudesu"
      End Sub

  • @ななか大橋
    @ななか大橋 5 месяцев назад

    途中から よろしいですかよろしいですねよろしいでしょうかの三段構えの口癖が気になって何も入ってこなかった

    • @メンタエクセル
      @メンタエクセル  5 месяцев назад

      そうですよね!そこに気付いてからは気をつけてます!

  • @downtouch3284
    @downtouch3284 2 года назад

    説明がわかりやすく大変ありがたかったです。
    因みにこれのサンプルデータ等はありますでしょうか?

  • @ぞのあつこ
    @ぞのあつこ 2 года назад

    まさに今知りたかったvbaです。初心者ですが、繰り返し作業に役立てたいと思います!ありがとうございます。
    コピーした後、貼付けの形式を「値」と「リンク付き」でする方法を試しているのですがどうしても分かりません。
    ご教示頂けますでしょうか。
    宜しくお願いします。

    • @メンタエクセル
      @メンタエクセル  2 года назад

      ご視聴ありがとうございます😄
      また動画にする機会がありましたら解説させていただきますね♪
      コメントもありがとうございます!

    • @ぞのあつこ
      @ぞのあつこ 2 года назад

      @@メンタエクセル さん
      返信有り難うございます!
      社員数が増えてきたので、コピー・ペーストの手作業に限界を感じております。
      是非動画をお待ちしています。
      宜しくお願いします!

  • @yukit375
    @yukit375 2 года назад +1

    初歩的な質問ですみません。ループは「まとめ」のブックは自動的に含まれずに処理されるのでしょうか?

    • @メンタエクセル
      @メンタエクセル  2 года назад +1

      同じフォルダだと含まれるのでIFなどでスキップさせたりして処理してますよ😄

    • @yukit375
      @yukit375 2 года назад

      @@メンタエクセル ご返信ありがとうございます。
      何度か動画見返しましたが、スキップさせてるところがわかりませんでした。Dir関数でファイル名でワイルドカード使う場合、マクロを作成してるブックは以外が返されるのでしょうか?

  • @まさひろ-q2v
    @まさひろ-q2v 4 года назад +2

    ありがとうございます。私のやりたいことを教えていただけて感謝しています。
    ほぼ毎日お客様から届く注文書を共有ファイルの管理簿へ転記する作業があり、一つにまとめるやり方をさがしていました。ネット検索して調べていると説明がはしょっていたり、変数がw r とか一文字で分かり難いものが多く挫折してきました。
    メンタエクセルさんのコードを参考にして業務に取り組んで参ります。

    • @メンタエクセル
      @メンタエクセル  4 года назад

      まさひろさん
      いつもコメントいただきまして感謝です!☺️
      お役に立てる情報をお届けできて嬉しいです!
      結構業務では使うコードだったりしますよね。管理簿への転記でも使えそうで良かったです😊
      変数などは「解読しやすさ」が大切になりますよね!確かに一文字だど分かりにくかったりします。
      内容が理解しやすく伝わっておりましたら嬉しいです😄

  • @mickeynb6c
    @mickeynb6c 4 года назад +2

    丁寧、簡潔、非常に分かり易い動画でした。
    普段の業務に応用で色々活用出来そうで、早速試しに作成してみようと思います。
    マクロは業務で色々作ってきましたが、普段使用しない内容が多く、全ての動画の
    説明が分かりやすいので、非常に助かります
    最近、メンタエクセルさんの動画を見つけ、一気に視聴しておりますがUP数が多く
    毎晩遅く迄動画を見るのが日課になってきました
    これからも、どうぞ色々な便利な動画のUPを楽しみにしております!!!!!!

    • @メンタエクセル
      @メンタエクセル  4 года назад

      mickeynb6cさん
      コメントありがとうございます!
      そういっていただけるととても嬉しいです😊
      動画は多いですが、見るほどスキルが上がっていくと思います♪無理のない程度のペースでご覧くださいね☺️
      お役に立てれば嬉しいです!

  • @dreamer-ik6qp
    @dreamer-ik6qp 2 года назад +1

    本当これが出来たらどんなにいいか…今日ネットで検索してやってみたけど難しくて出来なかった。リベンジで習得したくてたどり着きました。わかりやすいです!

    • @メンタエクセル
      @メンタエクセル  2 года назад

      ご視聴ありがとうございます😄
      お役立てくださいますと嬉しいです♪

  • @nobira1
    @nobira1 4 года назад +1

    遅くなりましたが、ようやくこの回の処理を、実務利用まで辿り着きました。感謝、感謝です。今後も復習も兼ねて、何度も見直しますね。

    • @メンタエクセル
      @メンタエクセル  4 года назад

      nobinobiさん
      コメントありがとうございます😊
      良かったです!
      今後も何か業務改善のヒントになるような動画をUPしていければと思います。
      今後ともよろしくお願いします♪

  • @own-kmu
    @own-kmu 2 года назад

    お世話になっております。とても勉強になりました。
    一つ質問なのですが、マクロ有効ブックもまとめるためにfilenameの"¥*.xlsx"の部分を"¥*.xlsm"や"¥*.xls*,"や"¥*.xls?"とエラーになってしまいます。(正確には、全面グレーの画面になり、強制的にファイルが閉じられます)マクロ有効ブックを含めてまとめるためにはどのようにすればいいのでしょうか。よろしくお願いいたします。

  • @早川正昭-z8y
    @早川正昭-z8y 4 года назад +4

    大切なエッセンスが濃縮されてるプロシージャですね!素晴らしい動画ありがとうございます。

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      早川正昭さん
      コメントありがとうございます😄
      そういっていただけまして嬉しいです!
      また企画して役に立つ動画を作っていければと思います☺️

  • @h.lc.
    @h.lc. 4 года назад +2

    複数ブックのデータから「抽出表示」(ドロップボックスなど)させるとき、必ず今回の内容とおりに 「複数ブック→1つのブック」にまとめてから行うしかないでしょうか? 実用的には、複数のフックから 自由に 見たい情報を抽出する時が多いので、毎回導入しなければいけないのでしょうか?

    • @メンタエクセル
      @メンタエクセル  4 года назад

      H.I.Cさん
      ご質問内容に回答させていただきます😄
      結論からお伝えしますと、個別のファイルからデータを抽出することも可能です。
      VBAは基本的になんでもできてしまうのですが、ただその場合、コードの記述は変わってきます。
      ここでは述べませんが、やり方次第で個別のシートのデータを抽出して一つのExcelファイル上に表示させることもできますよ😊

    • @h.lc.
      @h.lc. 4 года назад

      @@メンタエクセル ご回答ありがとうございます。個別の抽出使用するのと、1つに抽出して使用するのとスピード的にはどちらが早いのでしょうか?また、個別のシートに数式が入ったものでも抽出可能でしょうか?

  • @ki7889
    @ki7889 4 года назад +1

    ここ半年くらいでVBAを始めたので、動画をよく参考にさせてもらってます。
    ファイル名を打ち込む事なく大量の転記できたらいいなと思ってはいたものの、知識がなくて実現できていませんでした。
    今回の動画を参考に、コードを書いてみようと思います!

    • @メンタエクセル
      @メンタエクセル  4 года назад

      K I さん
      コメントありがとうございます^ ^
      お役に立てれば嬉しいです!
      今回のコードは使える場面も多いかなと思いますのでご活用いただければ幸いです☺️

  • @jsukeagesage2995
    @jsukeagesage2995 4 года назад +3

    とてもわかりやすいです

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      Jsuke AgeSage さん
      嬉しいコメントありがとうございます😊
      今後もわかりやすく伝えていけるように努めます^ ^

  • @ryoyama9598
    @ryoyama9598 3 года назад +3

    説明がわかりやすいですね。
    ファイルコピーの際は、別の方法で統合という機能があります。
    応用版では1行目の見出しが違っていてもひとつにまとめてくれるのでお勧めですよ。

  • @黒坂周平-p9m
    @黒坂周平-p9m 4 года назад +1

    とてもわかりやすく勉強になります
    貼り付けの際なんですが値で貼り付ける方法などありますか?

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      黒坂さん
      コピーメソッドだけではなく、PasteSpecialをご使用いただければ可能です😊
      ただ、詳細はMenta VBAスクールの講座内容と被っておりますため、大変申し訳ございませんが、こちらで詳しく解説ができません💦
      予めご了承いただけますと幸いです💦
      簡単に説明いたしますと、
      コピーメソッドではコピーのみ
      Paste Specialで数値貼り付け
      その後もう一度フォーマット貼り付けでできます!

    • @菅原順子-b4l
      @菅原順子-b4l 3 года назад

      @@メンタエクセル
      とてもわかりやすいVBAの解説で
      参考にさせて頂いてます。
      値貼り付けをしたいのですが
      どうにも上手く行きません。
      スクールの講座はどこで見れますか?
      詳細知りたいです。
      PasteSpecialを使用してみても
      コードにエラーが出てしまいます。
      何が間違っているのかがわからないです。
      PasteSpecialは
      rng.Copy sh.Cells(lastRow + 1,1).PasteSpecial …
      では間違っているのでしょうか?

  • @n.y5589
    @n.y5589 4 года назад +1

    Do Loop前のlastRowの取得は必要あるのでしょうか?

    • @jannedaarc8362
      @jannedaarc8362 4 года назад +1

      それ私も思いました。
      なんならそもそもlastRow自体不要で、コピペの行をrng.Copy matomeSh.Cells(Rows.Count, 1).End(xlUp).Offset(1)でいい気がしますがどうなんでしょうか…

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      N. Y さん
      ご指摘いただきありがとうございます^ ^
      確認させていただきました!
      おっしゃる通りでございます。
      最初のlastRowの一行は不要ですね^_^;
      すみませんがその一行は不要という解釈で動画をご視聴いただけますと幸いです。
      今後ともよろしくお願いします(^^)

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      Janne Da Arc さん
      コメントありがとうございます!
      最初のlastRowは不要ですね^_^;
      ご指摘ありがとうございます!
      あとJanne Da Arc さんのコードでも記述可能ですね!コード行数が減りますよね。
      可読性か行数を減らすか
      好みで使い分けてもらえたら嬉しいです^ ^
      今後ともよろしくお願いいたします☺️

    • @n.y5589
      @n.y5589 4 года назад +1

      ご回答ありがとうございます。
      参考になります。

    • @shuch1152
      @shuch1152 4 года назад

      @@メンタエクセル 横からすいません、最初のLastrowの定義を残して、Do~Loop内のLastrowの定義を削除しても動きますか?

  • @hiroshienishi4643
    @hiroshienishi4643 4 года назад

    記載忘れがありました。
    Dir関数の使い方がとても良いです。
    今までファイルを取得して、リストを作成し、
    リストに基づいて実行するという作り方をしていました。
    なので、もっと長いコードになっていました。
    今回、短くコードで済んで楽ちんでした。

  • @ゆうゆう-z8r
    @ゆうゆう-z8r 2 года назад

    とても参考になりました。複数のサブフォルダ内のExcelファイルを集計するツールを作成したいのですが、この動画のコードを応用することでできるでしょうか?Dir関数でやろうとしているのですがなかなかうまくいきません。。

  • @nameuser9662
    @nameuser9662 4 года назад +2

    本当にわかりやすいです。会社で、作成するマクロに役立ててます。ありがとうございます。

    • @メンタエクセル
      @メンタエクセル  4 года назад

      寺田かすさん
      コメントありがとうございます😊
      本当ですか!実際にお伝えしたマクロを役立てていただいていることが僕にとって最高の褒美です♪
      お知らせいただき感謝します!
      これからも出来る限り分かりやすくお届けしていきますのでよろしくお願いします☺️

  • @たぬ吉茶屋
    @たぬ吉茶屋 4 года назад +1

    良いプログラムありがとうございます。楽しく勉強できる動画はここが一番良いと思います
    またまた質問ばかりで申し訳ないですがシュートカットのエクセルファイルでも同じ処理は可能ですか?

    • @メンタエクセル
      @メンタエクセル  4 года назад

      たぬ吉茶屋 さん
      コメントありがとうございます😊
      ショートカットがフォルダに入っている場合は厳しいですね(^^;
      高度な操作が必要になります。
      今回のコードは大元のExcelデータが複数フォルダ内に入っている場合に限られますね!

    • @かつとん-m8z
      @かつとん-m8z 4 года назад

      なるほどなー
      ショートカットは都度都度パス探す必要があるから、複雑な操作になるのか

  • @前羽美穂
    @前羽美穂 4 года назад +2

    とても勉強になりました!こちらのサンプルエクセルはないのでしょうか?

    • @メンタエクセル
      @メンタエクセル  4 года назад

      mh mhさん
      コメントありがとうございます😊
      すみませんこちらはサンプルデータはございません😭
      申し訳ございません。

  • @ぽんちゃん-l6f
    @ぽんちゃん-l6f 3 года назад

    最近独学で始めたばかりなのですが、複数のcsvを1つのブックにまとめたいです。まとめるブックには項目名は入っています。csvは一週間分で7個あります。ご教示願います。

  • @こげちゃあられ
    @こげちゃあられ 4 года назад +1

    列の並びが違う場合も可能ですか?

    • @メンタエクセル
      @メンタエクセル  4 года назад

      withさん
      コメントいただきましてありがとうございます😄
      列の並びが違うと、可能かと言えば可能かもしれませんが、そうなるとコード量がかなり増えて難易度、ツール作成の作業量も比例して増えてしまいますのであまりお勧めはしておりません。
      基本的には同じ形が前提となりますね。

  • @たぬ吉茶屋
    @たぬ吉茶屋 4 года назад

    返信ありがとうです。ショートカットが無理でしたか、まだまだ勉強不足ですみますん、
    よしエクセルのハイパーリンクならいけるかななんて、考える頭がグルグルまわってきました。色々チャレンジしてみますね。

    • @jannedaarc8362
      @jannedaarc8362 4 года назад

      横から失礼します。
      フォルダ内のデータファイルが、データファイルそのものではなくデータファイルのショートカットだった場合でしたら、
      fileName = Dir(ThisWorkbook.path & "\*.xlsx")の部分を、fileName = Dir(ThisWorkbook.path & "\*.xlsx*")に変えるだけで出来る気がしますが、どうでしょうか?
      違う話でしたらすみません。

  • @microsoftofshady
    @microsoftofshady 4 года назад +1

    いつも拝見させて頂いております。
    とても助かっています。
    fileNameの拡張子(ファイルタイプ)をマクロ有効bookの.xlsmにするとだんまりになります。
    .xlsxマクロのないタイプですと問題なく動きます。
    マクロ有効book間のコピーはできないのでしょうか?1週間いろいろ試しましたが改善できずコメント欄に書かせて頂きました。

  • @ゆいさん-s3p
    @ゆいさん-s3p 3 года назад

    仕事でこの作業が本当に多いので、動画を参考にツール作成できました。いやほんと出来るようになってよかったわぁ。
    ちなみに、まとめたブックを特定条件でフィルタ→各グループ毎に別ブック保存する、というvba に四苦八苦してます。。そんな動画、あるといい…なぁ。。

  • @マートマーチ
    @マートマーチ 3 года назад

    ありがとうございます。
    動画を参考にさせてもらいました。
    教えていただきたいのですが、抜き取るエクセルのシート名がバラバラな場合、作業を可能にするにはどう変えたら良いですか?

  • @岡村保-i3g
    @岡村保-i3g 3 года назад

    仕事でこの手の作業を改善したいと思っていて、
    参考にさせていただきました!
    質問なのですが、コピー元ファイルのA列にNo、B列に値があるとき、
    B列に値がある場合のみA列もコピーしたいのですが
    どのようにしたらよいのでしょうか?
    カレントリージョンだと表全体となり、
    B列に値が入っていなくてもA列にNoが
    入っていればコピーされてしまいます。

  • @田中民生-u6l
    @田中民生-u6l 9 месяцев назад

    いいね!!

  • @matsu0105miro1013
    @matsu0105miro1013 4 года назад

    お世話になります😊
    いつも丁寧に構文を説明してくださってるのでとても勉強になります😀
    大変な時期なのでお家にこもって勉強するにはピッタリですし…😅
    直接的には難しいのですが、応用して使わせて頂こうと思います🤔
    たくやさんもどうぞお身体に気を付けて下さい🤗❗

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      Miro Miro さん
      コメントありがとうございます😊
      この時期はスキルアップに最適ですよね!
      少しでもヒントになれば嬉しいです!
      Miro Miro さんも体調にはお気をつけてくださいね^_^
      僕は鼻うがいとかやってます!

  • @maomukai7507
    @maomukai7507 4 года назад +2

    この動画は本来お金を払って学ぶレベルの質ですね。大変助かりました。ありがとうございます。

    • @メンタエクセル
      @メンタエクセル  4 года назад

      mao mukaiさん
      コメントいただきましてありがとうございます😊
      そういっていただけると本当嬉しいです。

  • @hiroshienishi4643
    @hiroshienishi4643 4 года назад +2

    たくやさん
    ありがとうございます。
    完全コピーで直ぐに動きました。
    ただ、読込ファイルに空データがあり、エラー停止しました。
    で、少しだけ、変更しました。
    空データは飛ばすためのに読み込んだシートのlastRowを求め、「1」なら実行しない。
    そんなif文を加えました。
    ○ lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row

    ○ If lastRow 1 Then
    lastRow = matomeSh.Cells(Rows.Count, 1).End(xlUp).Row
    Set rng = sh.Range("A1").CurrentRegion.Offset(1, 0).Resize(sh.Range("A1").CurrentRegion.Rows.Count - 1)
    rng.Copy matomeSh.Cells(lastRow + 1, 1)
    ○ End If
    3行加えただけで済む。
    ちょうど、こういのを作ろうと思っていたタイミングでしたので、助かりました。
    これをベースにアレンジしていきます。
      列を増やす。(ファイル名など)
    今後も参考にさせて貰います。

    • @メンタエクセル
      @メンタエクセル  4 года назад +1

      hiroshi enishi さん
      コメントありがとうございます😊
      動いてよかったです!
      たしかに空データの場合はエラーになりますね!
      ご丁寧に補足までしていただきましてありがとうございます^ ^
      色んなパターンに対応するコードを書くことが大切ですね!
      今後もお役に立てる動画を作れるように頑張ります!
      あと、他の方からのご指摘で気づいたのですが、最初のlartRowの一行は不要でした!
      申し訳ないのですが最初のlartRowの一行は無しでお願いいたします。

  • @かつとん-m8z
    @かつとん-m8z 4 года назад +2

    いやー
    とても綺麗なコードですね
    無駄なところがない(笑)
    使わせていただきます

    • @メンタエクセル
      @メンタエクセル  4 года назад

      かつとんさん
      ありがとうございます😊
      そういっていただけますと嬉しいです♪