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

列数が多い場合は、列数もReDimではなく固定値にしちゃった方が処理が早いです
▼動画を見ながら実践できるようにコンテンツを配布中
it-yobi.com/excel-p-no123/?li...
※色んな分割(タブなど)についても記載しています!
【おすすめの参考書】
it-yobi.com/office-excel/#doc...
▼csv読込(配列を使わない方法)▼
• ExcelVBA【実践】マクロ(VBA)でC...
+---------------------------+
■IT予備メンバー募集
+---------------------------+
勉強を継続するためのサポートを行います。
その中には、動画内の作品の配布や質問し放題などを用意しています。
▼詳しくはこちら▼
it-yobi.com/member/
+---------------------------+
■目次
+---------------------------+
00:00 挨拶
00:18 完成イメージ
01:20 準備
01:55 作成(読込速度を上げる方法)
03:21 作成(CSV読込関数)
25:51 完成
26:28 プログラムの全体
37:15 まとめ
+---------------------------+
■マンツーマンの講座(基礎から業務改善まで)
+---------------------------+
基本的な使い方から、業務相談、開発サポートまで行っています。
【Excel】基本操作からVBAまで
www.street-academy.com/myclas...
【Googleスプレッドシート】基本操作からGASまで
www.street-academy.com/myclas...
+---------------------------+
■開発依頼・相談・その他の仕事の連絡はこちら
+---------------------------+
気になることがあれば、ご連絡ください。
word07q@gmail.com
+---------------------------+
■再生リストはこちら(Excel・Googleスプレッドシート・Pythonなど)
+---------------------------+
タスク管理表やカレンダーなど細かくまとめています。
/ @chanryo_eff
+---------------------------+
■SNS
+---------------------------+
TwitterではKZreadでは発信していない小技などを定期的に配信しています。
【Twitter】効率化の小技を発信
/ chanryo_eff
【Instagram】作品を発信
/ chanryo_eff
【TikTok】Shorts動画を発信
/ program_chanryo
#IT予備にてファイル配布中

Пікірлер: 38

  • @chanryo_eff
    @chanryo_eff2 жыл бұрын

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

  • @choni1273
    @choni12732 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @yutaratt
    @yutaratt10 ай бұрын

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

  • @chanryo_eff

    @chanryo_eff

    10 ай бұрын

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

  • @user-cg7gj5ef3x
    @user-cg7gj5ef3x2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @beckham-es7pc
    @beckham-es7pc2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @shotatanaka8340
    @shotatanaka83402 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

    いつもありがとうございます! もちろん可能になります。 調べてみたところ、こちらが参考になるかもです。 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 жыл бұрын

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

  • @dana7872
    @dana7872 Жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    Жыл бұрын

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

  • @dana7872

    @dana7872

    Жыл бұрын

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

  • @user-fe1jb9eb8h
    @user-fe1jb9eb8h2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @user-fe1jb9eb8h

    @user-fe1jb9eb8h

    2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @user-cc1cd8xt5x
    @user-cc1cd8xt5x2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @user-cc1cd8xt5x

    @user-cc1cd8xt5x

    2 жыл бұрын

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

  • @kaza9052
    @kaza90522 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @kaza9052

    @kaza9052

    2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @hadouryuu
    @hadouryuu2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    2 жыл бұрын

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

  • @hadouryuu

    @hadouryuu

    2 жыл бұрын

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

  • @imo1player
    @imo1player Жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    Жыл бұрын

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

  • @user-ve5ne9km1g
    @user-ve5ne9km1g2 жыл бұрын

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

  • @chanryo_eff

    @chanryo_eff

    Жыл бұрын

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

Келесі