|
▼かわかみまめお さん:
γさんからポイントをついたレスがでていますので蛇足です。
●まず、作成したいテキストファイルなんですが、
・単に各列のセルの値を単純につなげたものを1行として扱う形のファイルですか?
・各列のセルの項目間にタブを挟んだものを1行にした形のファイルですか?
アップされたコードで作成しているファイルは後者です。
違いは、このファイルをエクセルからブックとして開いたときに
前者は各セルの値が連結されて、すべて A列に表示されます。
後者は各セルの値が各列に分かれて、いかにもエクセルブックらしく表示されます。
両者をメモ帳で開いても、その違いがわかると思います。
後者のファイルを タブ区切りのテキストファイルと呼んだりします。
(作成したいのはこちらのほうだと思いますが?)
●たとえば A1 に aaa 、B1 に bbb、C1 に ccc という3列のセルの1行だけを
テキストファイルとして書きこんだ時に、できあがったファイル
をバイナリーエディターソフトで調べると、
前者 は aaabbbccc改行
後者 は aaaタブbbbタブccc改行
こんなようになっていることがわかります。
エクセルでブックとして開いた場合、タブコードがあれば、セルがわかれます。
行の最後の改行コードは、その行は、そこでおしまいということを意味します。
もし、この後にもデータが続けば、そのデータはエクセル上の次の行に表示されます。
● Print ステートメント
これについては ネット で Printステートメント を検索語にして検索し
h tps://msdn.microsoft.com/ja-jp/library/office/gg264278.aspx 等、
でてきたページのわかりやすいものを選んで、読んでおかれることをおすすめします。
Print 文字列 とやると 文字列の最後に改行が付加された形で書きこまれます。
文字列は、1行毎のものでもいいですし、全行分を改行コードを適切にいれた形の文字列にして
その全行分文字列を一挙に書きこんでもOKです。
アップされたコードでは、各行の最後に改行をつけた全行分の文字列を1回で書きこんでいます。
●エクセルのセル内での改行処理
セル内で改行されている各行を分解して取り出すということについては、いろいろ方法が
あります。そこは、いかようにでもできます。
その改行コードのことをメモします。
アップされたコードでも使っている vbCRLF 、これが Windows の標準の改行コードです。
値は2桁、CR(13)とLF(10)が合わさったものです。
一方、エクセルのセル上で、文字をタイプして、Alt/Enterで入力した時にセットされるコードは
1桁のLF(10) です。
念のため、セル内の改行コードが LF でセットされているのかその他の改行コードになっているのかを
確認しておかれたらいいと思います。
たとえば、B1 がセル内改行で3行になっていたとします。
どこかのセルに =LEN(B1) といれます。そのとき表示された数値が、見た目の文字列合計の長さより
2桁多ければ 1桁の改行コード、4桁多ければ 2桁の改行コードが使われているということになります。
で、別のセルに =CODE(MID(B1,ROW(A1),1) と打ち込みます。
これを =LEN(B1) で表示された数値分、下にフィルコピーします。
そこででてくる文字コードを見ます。10 とか 13 とかといった改行コードも現れますので
セル内で使われている改行コードが実際にはどんな値なのか(どんな値の組み合わせなのか)が
わかると思います。
それを教えてもらえれば、セル内改行を処理する具体的なコード例の回答もよせられると
思います。
|
|