VBA エクセルからテキストへ書き込む!

VBAでエクセルからテキストへ書き込む備忘録。

そもそもですが、エクセルからテキストへは読み込みなのか、書き込みなのか混乱しながらになっておりますが、エクセルがVBAの中心と考え、
今回はエクセル→テキストを書き込みとします。

CSVやtxtファイルからエクセルに書き込むのとは違い、エクセルからCSVやtxtに書き込むのは慣れていないせいか非常に面倒に感じます。

さらに、読み込みは何かのシステムを経由して書き込むことはあるとは思いますが、テキストファイルやCSVへ書き込むということは、中心をエクセルにしているようなシステム的な考えができて作成できる人が見ていると思いますので、下記のポイントを踏まえてこの記事を進めていきます。

ポイント

Openの開き方で処理を変える

WriteじゃなくてPrintを使う

区切り文字は読み込みを意識

まずはサンプルコードと結果を示す

メモ帳に書き込むコード

メモ帳に書き込むコードの呼び出しコード

サンプルの実行結果

こんな結果を求めているのであれば上記のコードで解消できます。

私が、なぜこのコードを選んだのかなどの云々の話長くなる系は、ここから始まります。

メモ帳の細かい話

今回のポイントを紹介

ポイント

Openの開き方で処理を変える

WriteじゃなくてPrintを使う

区切り文字は読み込みを意識

Open フルパス For 開き方 As #ファイル番号

Print #ファイル番号 プリント対象データ

今回は、OpenコードとPrintコードを使用します。

Openの開き方で処理を変える

書込み用の開き方には、二通りの手法がある。

Append:追記

Output:新規書き込み

この理解で良い。Appendを使ったら、フルパスのファイルに追記します。Outputを使ったら、フルパスのファイルに新規で書き込みます。という指示となっている。

フルパスは拡張子をまで入力!

フルパスは、拡張子まで入力をしないといけない。”.txt”もしくは”.csv”の入力までを済ませなくてはいけない。

結構忘れてしまったり書いているとこんがらがるので、注意しておいてください。

念のためのファイル番号について

ファイル番号は、複数同時に起動させないのであれば、基本は”#1”で良い。♯1ではない。”#1”だ。シャープではなくて 番号記号(ナンバーサイン) というのが正式な呼び名。

Shift + 3で番号記号(ナンバーサイン)は出せる。

WriteじゃなくてPrintを使う

Writeは使い勝手があまりよくありません。データを格納するときに、変数の中に全文を作って入れれないのが一番僕のコードの使い方に合いません。

また、細かい使いまわしにおいては後述します。

区切り文字は読み込みと書き込みを意識する

区切りは、読み込みの正確性に影響します。例えば、カンマでSplitした場合は注意が必要で「¥3,000」とかにも反応して列数よりも多くの区切りを入れる可能性があります。

だから、カンマだけではなくていろいろな考えの中で、区切りを作ることで正確な処理につながります。