Excelで扱うCSVファイル

ファイルの終端まで読み込む

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
テキストファイルの、先頭行から最終行まで、全データを読み込む方法を解説します。
講師:
09:59

字幕

このレッスンではファイルの終端まで読み込む方法について解説します。まずこのチャプターで使うテキストファイルを準備しておきましょう。C ドライブに ”work" というフォルダを作成し、チャプター 2 の sample txtsample.csv、data.csv を保存してください。尚、このレッスンでは sample txt を使います。このsample txt は、こういったデータが入力されています。この画面はメモ帳ではなく、テキストエディターというアプリケーションの画面です。テキストエディターはテキストを入力する専用のアプリケーションですので、実際に入力されているデータ以外にも様々な情報が表示されています例えば行末に表示されている折れ曲がった矢印、これは目に見えない改行コードがここに入力されているということを表しています。一番最後にある<EOF>というのはEND OF FILEという意味でここがファイルの終端、もうこれ以降にはデータがないという事を表しています。このファイルの終端であるEOFというのはこの後の話に出てきますので頭に入れておいてくださいさて、ファイルからデータを読み込むときにはいくつかの方法があります。 最もよく使われるのは、1行分のデータを読み込むやり方です。1行分のデータを読み込むにはLine Input Statement というのを使います。Line と Input の間に半角スペースが必要ですから注意してください。引数には何番のファイルから読み込むというファイルの番号と読み込んだデータをこの変数に入れるという変数の名前を指定します。例えば、こんな感じです。1番のファイルから1行分のデータを読み込んで変数バッファに格納するそういう意味です。尚、Line Input で指定する変数は文字列型を指定してくださいこのように Line Inputで1行読み込むと、どの行が読み込まれるのかというと、1行目が読み込まれます。つまり、Line Input が注目しているいわば読み取りポイント、これが最初は1行目にあると考えられます。ではこの Line Input を使って、ファイルの先頭行から終端まで1行ずつすべて読み込むにはどうしたらいいんでしょう。今申し上げたように、Line Input がどこを読むのかという、いわゆる読み取りポイントは最初1行目に向いています。従って Line Input を実行すると1行目が読み込まれて変数バッファに入ります。 その時 Line Input は自動的に読み取りポイントを1行下げてくれます。従ってもう一度同じLine Input を実行すると今度は2行目が読み込まれます。さらに行があるのでしたらもう一度実行すると3行目が読み込まれます。こうして、もしすべての行がすべて読み込まれると読み取りポイントはもうファイルの終端、もうこれ以上後ろにはデータはないという場所の<EOFに到達します。つまり、ファイルの1行目から最終行まで1行ずつ読み込むには、この Line Input#1,buf というのを何回か繰り返してやればいいことになります。そうした時に使うのが Do Loop です。Do Loop は条件による繰り返し命令です。ではDo Loop の条件に何を指定したらいいんでしょう。もし読み取りポイントが<EOF まで達したらもう読まなくていいんですね。では、もし読み取りポイントが<EOF ではなかったら、1行目か、2行目か、3行目か、4行目か、5行目か分かりませんしかし、まだ<EOF に達していなかったら繰り返し行えばいいんですね。Line Input#1,buf を実行してやればいいんんです。 従って Do Loop の条件はこのように、読み取りポイントが<EOF ではない間ということになります。さあ、では我々はこの読み取りポイントがどこにあるのか<EOF に達したのかどうかどうやって調べればいいのでしょう。安心してください、専用の関数があります。その名もずばり、EOF 関数です。EOF 関数はカッコの中にファイルの番号を指定します。今1番のファイルの読み取りポイントは、ということを教えてくれます。EOF関数が何を返すのかというと、もし読み取りポイントが<EOF に達していたらこの関数は True を返します。読み取りポイントが<EOF に達していなくてもし1行目、2行目、3行目などにあった場合、このEOF関数は Falseを返します。従って Do Loop の条件はEOF 関数の結果がFalse である間ということになります。この ”である” というのは、Do Loopの書き方で "While" で表されます。従ってDO Loop の条件はDo While EOF(1) = False となります。もちろんこの書き方で何ら間違いはありません。ただ実際にはこの処理を行うほとんどの方はこういう書き方はしません。 実はここは Until を使うと Do Until EOF(1) と書けます。これはある種、定番の書き方という事で覚えておいてしまってもいいでしょう。この書き方を使うことでファイルの先頭行から最終行まで1行ずつデータを読み込むことが可能になります。具体的なコードは例えばこんな感じです。Openでファイルを開いた後、Line Input #1, bufこれを何回か繰り返すわけですので上下に Do Loop で囲ってあります。こうすると変数バッファに1行分のデータが格納されます。変数に入ってしまえば、こちらのものです。例えばセルに代入するのであればcells 行を表すのはここでは変数 i にしましょう、その1列目、A 列ですね、そこに代入する。このような書き方になります。但し気をつけなければいけないのはDo Loop は For Next と違って何もしてくれません。こういう風に書いた時の変数 i、これを1つずつ増やしてくれることもしてくれないし、初期値を設定してくれることもしてくれません。全部我々が自分で指定しなければいけないんです。従って Do Loop の前で変数 i のスタート初期値を設定してあげます。 そして Do Loop の中で変数 i を1ずつ増やしてあげます。こうすることで読み込んだデータが1行目、2行目、3行目という形にセルに代入されていきます。ではこのマクロの動作を確認してみましょう。Chapter 2の Input xlsm を開きSheet1を開いてください。尚、ブックを開いた時にこのようにマクロが無効にされた旨のメッセージが表示された時には、コンテンツの有効化ボタンをクリックするなどしてマクロを有効にしてください。もし A 列に何かのデータが入力されていたらA 列全体を選択し削除を実行してクリアしておきましょう。では、VBEを開きます。開発タブをクリックし左端のVisual basic button をクリックします。実行すると VBE が起動されます。ここでは、Module3 をダブルクリックします。先ほど解説したコードがここに書いてあります。解説したことを思い出しながらコードをよく読み、理解ができたら Sub user form の実行ボタンをクリックしてみましょう。Sample text から1行ずつ読み込みそれをワークシートに展開、つまり代入しています。テキストファイルを読み込んでワークシートに代入するとはこういうことです。 このレッスンではファイルの終端まで読み込む方法について解説しました。

Excelで扱うCSVファイル

CSV形式で保存されたテキストファイルをダブルクリックすると通常Excelが自動的に起動しますが、しばしばデータが正しく読み込まれないなどのトラブルが発生します。このコースでは必要な用途に合わせて適切にデータを読み込めるように、CSVファイルを扱ううえで必要な知識や読み込み・出力のさいの注意点などについて解説します。

2時間04分 (20 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 1,990
発売日:2014年03月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。