文字の変換はReplace関数を使う

文字の変換を行う関数にRelpace関数があります。改行文字もReplace関数を使って変換することが可能です。

VBAでは改行文字用の定数が用意されています。

改行文字 定数
CR vbCr
LF vbLf
CRLF vbCrLf
OS標準の改行コード vbNewLine

vbNewLineはWindowsの場合はvbCrLfと同じで、Macの場合はvbCrと同じです。

MaxOSXはUnix系なので本来はvbLfが正しいのではないかと思うのですがCR扱いになります。OS9時代の旧MacはCRが改行コードだったためその名残でしょうけど中途半端な気がしますね。そのため個人的にはvbNewLineは信用ならないため利用しないようにしています。

改行文字の変換のコードは単純で、以下のような感じになります。

引数に渡された文字列に含まれるLF文字をReplace関数を使ってCRLFに変換しています。

改行同士間の変換関数

改行同士間で変換する関数は全部で6種類あります。残りの5種類も上のLFをCRLFに変換する関数と同様に実現できます。

使い方

上の関数の使い方は引数にString型の文字列を渡して、戻り値としてString型の処理結果を受けとります。

ここでは「”1″ + LF + “2” + CR + “3” + CRLF + “4”」の文字列を使ってLFをCRLFに変換してみます。

実行すると変換前と変換後の文字列のASCIIコード値を出力します。

出力結果は以下です。実際は縦に並べて出力されますが分かりやすいように横に並べてみます。

変換前 変換後
49 49
10 → LF 13 → CR
10 → LF
50 50
13 → CR 13 → CR
51 51
13 → CR 13 → CR
10 → LF 13 → CR
10 → LF
52 52

このように、LFがCRLFに変換されていることが分かります。また、CRLFのLFもCRLFに変換されているため、CR+CR+LFになっています。

一応補足ですが、CRとLFはそれぞれ1バイトですが、CRLFはCRとLFを並んでいる状態のことを指すため2バイトになります。

そのため、LFからCRLFに変換すると変換後の文字列のサイズはCRが増えた分だけ増加することになります。