ExcelVBA【実践】CSVファイルを超高速で自動読込!数万行のデータも一瞬!【解説】

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

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

  • @chanryo_eff
    @chanryo_eff  3 года назад +1

    こちらで配布しています!
    it-yobi.com/excel-p-no123/?link=4
    【配布あり】こちらでExcel講座をまとめています!
    it-yobi.com/course/?pageNo=1&orderNo=2&categoryNo=10&link=4
    ●---Excel【基礎】---●
    Excelを始めるにあたり、必要な知識をまとめています!
    詳しくは再生リストにて!
    ruclips.net/p/PLuUrleRMhKDc1thXw-EmZAU34vhLrKnm3
    ●---Excel【実践】---●
    実際に開発しながら解説しています!
    詳しくは再生リストにて!
    ruclips.net/p/PLuUrleRMhKDf4BrAPNt5lfJ7bGCcgCQUw
    ●---Excelその他---●
    他にもデータベースなど再生リストを用意!
    ruclips.net/channel/UCy5cpoeTKqZ2cDzWX8NB3Ggplaylists
    ●---Googleスプレッドシート【基礎】---●
    Googleスプレッドシートを始めるにあたり、必要な知識をまとめています!
    詳しくは再生リストにて!
    ruclips.net/p/PLuUrleRMhKDe5kCiV88fRUuxsMvZ5asJC
    ●---Googleスプレッドシート【実践】---●
    実際に開発しながら解説しています!
    詳しくは再生リストにて!
    ruclips.net/p/PLuUrleRMhKDfjumSrU4Zb1PcH0WKqyg0m

  • @yutaratt
    @yutaratt Год назад

    すばらしいです。仕事でcsvファイルを扱う事がおおいので、大変参考になり、助かりました。

    • @chanryo_eff
      @chanryo_eff  Год назад

      お役に立てたなら幸いです!

  • @けーちゃん-f5w
    @けーちゃん-f5w Месяц назад

    いつも参考にさせていただいております。csvファイル2、3万行あるデータが10ファイルあり、今回のように一括して読み込み貼り付けをすることは可能なのでしょうか?

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

      2、3万件が10ファイル程度であれば、全然可能です!

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

    For Each の書き方的にそうなんだと思いますが、strとtmpの関係を書き表していないのにいきなりFor Each str In tmp と始めて、成り立つのが不思議です。

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

      関係性は特に必要ありません!
      tmpの内容をstrで1つ1つ受け取るというだけで、受け取る入れ物は型さえ間違っていなければstr以外でもなんでもいいです!

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

      @@chanryo_eff tmpの中身を1つ1つstrで受け取るって考えればいいんですね。それなら分かりそうです!英文的には、tmpの中のそれぞれのstr毎に…ってなると思うので、strがtmpの中にあるなんて、どこでも言ってないのに…って思ってしまった感じです😅

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

    CSVの取り込み、今まで手作業(「データ」タブ>「外部データの取り込み」>「区切り位置」>名前を付けて保存)による面倒な手順を行っていました。
    早速、教えていただいたコードを活用してCSVデータの取り込みを行ってみます!
    ありがとうございます。

    • @chanryo_eff
      @chanryo_eff  2 года назад +2

      いつもありがとうございます!
      是非、取り込んでみてほしいです😆

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

    これめっちゃ有用な動画や……
    ありがとうございます!

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

      こちらこそありがとうございます😂

  • @shotatanaka8340
    @shotatanaka8340 2 года назад +3

    いつもわかりやすい動画ありがとうございます。業務に活かすことができ、参考になります。
    質問なのですが、二次元配列に入れたデータをcsvに出力することは可能なのでしょうか?
    調べ方が悪いのか、なかなか出てこなくて…

    • @chanryo_eff
      @chanryo_eff  2 года назад +3

      いつもありがとうございます!
      もちろん可能になります。
      調べてみたところ、こちらが参考になるかもです。
      tonari-it.com/vba-write-csv/
      上記の記事の「エクセルシートの内容をCSVファイルとして書き出す」のところの内容です。
      Do Whileで1行1列ずつ文字結合している場所があるかと思います。
      こちらの内容を配列にするだけで大丈夫です!
      配列を繰り返す場合は、
      Do Whileではなく、
      For i = 0 To Ubound(配列,1)
      For j = 0 To Ubound(配列,2)
      みたいな感じで、存在する行数列数分繰り返せれると思います。
      確かに、CSVを出力する系のページが少なかったので、動画にしようか検討してみます😊

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

      ありがとうございます!
      動画楽しみにしてます😊

  • @シンシン-j1l
    @シンシン-j1l 3 года назад +2

    こんにちは。
    実務では大量のワードファイルをエクセルに変換することはしばしばあります。
    ①フォルダ内のワードファイルをhtmlに一括変換
    ②変換したWebページ(*.html,*.html)ファイルをエクセルへ自動読込
    上記の手順をVBAで実行するやり方をご教授いただければ幸いです。

    • @chanryo_eff
      @chanryo_eff  3 года назад +2

      コメントありがとうございます。
      WordVBAから実装するのか、ExcelVBAから実装するのかによりますが、
      ①に関しては、こちらのサイトが参考になるかもです。
      qiita.com/oyahiroki/items/8c3009cadccacdcd17b8
      ②に関しては、読み込んだものをどのように使うのかによって変わってきますが、こちらが参考になるかもです。
      excel-excel.com/tips/vba_488.html
      ざっくりしか見ていないので違ったらすいません。
      コンテンツ作成に関しては検討してみます🙇‍♂️

    • @シンシン-j1l
      @シンシン-j1l 3 года назад +1

      @@chanryo_eff ご丁寧に返信いただき、また参考サイトまでご紹介いただき、本当にありがとうございます。のちほど確認させていただきます。
      コンテンツ作成をご検討できると伺い、大変うれしく思います。楽しみにしておりますので、是非よろしくお願いいたします。

  • @きよの-b9b
    @きよの-b9b 2 года назад +2

    いつも参考にさせていただいております。
    質問なのですが、桁区切りされた数値を回避する方法はありませんでしょうか?
    この方法で読み込むとダブルクォーテーションと区切るまでの数値が列に入ってしまいます。

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

      こちらこそ、ありがとうございます!
      数字のみダブルクォーテーションで囲まれているということですね。
      以前対応した時の方法ですと、最初に1行の文字列を1文字ずつ確認して、「"」の数を数え、奇数の場合は、「,」でセパレートしない、偶数の場合は、「,」でセパレートするというようにしました💦
      他にも、調べるともっと簡単な方法があるかもです💦
      どんな条件の時に、分割するのかの誰が見ても分かるルールを定義することができると、不具合なく実装しやすいです!

    • @きよの-b9b
      @きよの-b9b 2 года назад +1

      @@chanryo_eff
      返信ありがとうございます。
      一文字ずつ判定させることで何とか出来ました。
      これからも参考にさせていただきます。

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

      @@きよの-b9b 解決したみたいでよかったです!報告ありがとうございます😆
      こちらこそよろしくお願いいたします!

  • @beckham-es7pc
    @beckham-es7pc 3 года назад +3

    いつも分かりやすい動画、ありがとうございます。
    最終列の処理は、不明な場合適当に99等、大きな数でやってました。大変参考になりました。
    最終行も最終列も大き目に設定することで対応できるんですね。
    書き出しの最終行はi にした方がいいかも?ですね。

    • @chanryo_eff
      @chanryo_eff  3 года назад +2

      ありがとうございます!
      最終行については、GAS(スプレッドシートのプログラム言語)とかだと、書き出し先と書き出し元のサイズは揃えないとエラーになってしまうため、定義サイズと同じにしています!
      ただ、Excelの場合は、サイズが一致していなくても大丈夫みたいですね!
      この場合は、最終行をiにして不一致するのか、100000にして一致するのかどちらの処理が早いのか比べてみたことがないので、調査してみます😂

  • @kaza9052
    @kaza9052 2 года назад +2

    はじめまして、動画を拝見させてもらっています。
    質問させていただいてよろしいでしょうか?
    配列への取込時にfor eachを使っていらっしゃる点についてです。
    for eachは読み込み順がランダムになるようなイメージをもっているのですが、
    順番は例外なくきちんと左から読み込んでくれるのでしょうか?

    • @chanryo_eff
      @chanryo_eff  2 года назад +2

      ありがとうございます!
      For Eachはランダムでなくインデックス順になるかと思います。
      そのため今回の内容は正しく読み込まれます。
      ランダムというのは何からの情報でしょうか??
      複数のセル(例えば、A1~D3)の場合は、
      A1,B1,C1,A2,B2,C2,A3,B3,C3の順番に読み込まれます。
      今回のFor Eachはテキストをカンマ区切りにした1次元配列なので、左から順番に読み込まれます!

    • @kaza9052
      @kaza9052 2 года назад +2

      @@chanryo_eff 回答ありがとうございます!
      なるほど、for eachでも大丈夫なんですね。
      ランダムというのは私の表現が悪かったです。よくfor eachでフォルダ内のファイルを取り出す処理をするのですが、ファイル名順とかで取り出されるわけではないようでしたのでそのように思いこんでおりました。
      しかし、for eachでセルの読み出す順番が決まっているということであれば今後どんどん使っていきたいと思います。

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

      @@kaza9052
      なるほどですね!
      フォルダ内のファイルの読み込みはDirの場合は、ファイルシステムの種類によって異なるのでそれが原因かもです!
      読み込み対象のドライブのプロパティを見ると「NTFS」もしくは「FAT」と書かれているかと思います!前者の場合は、名前昇順、後者の場合は、保存された順に読み込まれるみたいです!

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

    いつも動画見ております。
    貼り付け先について教えて頂きたいことがございます。
    作成頂いたコードを実行しますと、Sheet1へ貼り付けがなされますが、任意のシートに読込結果を貼り付けたい場合どのようにすればよろしいでしょうか。

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

      ありがとうございます!
      Range(…)の前にWorksheets()で任意のシートを指定することで実現可能です😊

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

      ありがとうございます!
      任意のシートへ貼り付けることができました!

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

    やっぱVBAめんどくさいなー、pythonで書いたらもっとシンプル。遅いけど。

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

      pythonの場合、便利なライブラリが揃っていていいですよね!
      openpyxlなら高速にExcelへと読み込めるかもですね!

  • @マンボー-m7b
    @マンボー-m7b 2 года назад

    コメント失礼します。
    対象ファイルを開いてマクロの中に格納する、「open file for input as#1」についてですが、私の場合、エラーメッセージ52のファイル名または、番号が不正です。と表示されます。
    念のためdebug.printでパスの確認を行いましたが、思い当たる原因が分かりません。
    もし可能でしたら、このことについてご教示頂けないでしょうか。

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

      プログラムと実行環境を見ないと判断が難しいですが、一般的に下記内容が当てはまるかと思います。
      www.tipsfound.com/vba/19052
      ※参考程度に載せておきます。