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

Sdílet
Vložit
  • čas přidán 5. 09. 2024

Komentáře • 38

  • @chanryo_eff
    @chanryo_eff  Před 2 lety +1

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

  • @user-cg7gj5ef3x
    @user-cg7gj5ef3x Před 2 lety +3

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +2

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

  • @choni1273
    @choni1273 Před 2 lety +4

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +1

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

  • @yutaratt
    @yutaratt Před rokem

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

    • @chanryo_eff
      @chanryo_eff  Před rokem

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

  • @beckham-es7pc
    @beckham-es7pc Před 2 lety +3

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +2

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

  • @dana7872
    @dana7872 Před rokem +1

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

    • @chanryo_eff
      @chanryo_eff  Před rokem +1

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

    • @dana7872
      @dana7872 Před rokem +2

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

  • @user-cc1cd8xt5x
    @user-cc1cd8xt5x Před 2 lety +2

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +2

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

    • @user-cc1cd8xt5x
      @user-cc1cd8xt5x Před 2 lety +1

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

  • @shotatanaka8340
    @shotatanaka8340 Před 2 lety +3

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +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 Před 2 lety

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

  • @user-fe1jb9eb8h
    @user-fe1jb9eb8h Před 2 lety +2

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +1

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

    • @user-fe1jb9eb8h
      @user-fe1jb9eb8h Před 2 lety +1

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +1

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

  • @kaza9052
    @kaza9052 Před 2 lety +2

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety +2

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

    • @kaza9052
      @kaza9052 Před 2 lety +2

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety

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

  • @hadouryuu
    @hadouryuu Před 2 lety +1

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety

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

    • @hadouryuu
      @hadouryuu Před 2 lety +1

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

  • @imo1player
    @imo1player Před rokem +1

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

    • @chanryo_eff
      @chanryo_eff  Před rokem +1

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

  • @user-ve5ne9km1g
    @user-ve5ne9km1g Před 2 lety

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

    • @chanryo_eff
      @chanryo_eff  Před 2 lety

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