改行コードの振る舞い

にメンテナンス済み

VBA を使ってテキスト処理を行う際、改行コードの扱いに注意が必要です。この記事では、VBA における改行コードの違いと、それぞれの振る舞いについて詳しく解説します。

VBA で使用される改行コードの種類

まず、VBA で使用される代表的な改行コードには、以下の 2 種類があります。

  1. CR(キャリッジリターン): ASCII コード 13
  2. LF(ラインフィード): ASCII コード 10

通常、Windows 環境では CRLF を組み合わせたCRLF(キャリッジリターン+ラインフィード)が一般的に使用されています。

改行コードの使用例

VBA で改行を扱う際の典型的なコード例を示します。

Sub InsertNewLine()
    Dim str As String
    str = "この行の後に改行を追加します。" & vbCrLf & "これは新しい行です。"
    MsgBox str
End Sub

vbCrLf を使った改行

vbCrLfは、Windows で一般的に使用される CRLF の組み合わせで、新しい行を始める際に使います。このコード例では、vbCrLfを使ってメッセージボックスに 2 行のテキストを表示しています。

vbCrvbLf の個別使用

VBA では、vbCr (キャリッジリターン)およびvbLf (ラインフィード)も使用できますが、一般的にはvbCrLfが推奨されます。vbCrまたはvbLfを単独で使用することはほとんどありませんが、特定のレガシーシステムやファイル形式を扱う際に役立つことがあります。

Sub UseCrAndLfIndividually()
    Dim strCr As String
    Dim strLf As String
    strCr = "この行の後にキャリッジリターンを追加します。" & vbCr & "この文字が次の行の先頭にきます。"
    strLf = "この行の後にラインフィードを追加します。" & vbLf & "この文字が次の行の先頭にきます。"
    MsgBox strCr
    MsgBox strLf
End Sub

改行コードの振る舞い

テキストボックスやセルでの改行

VBA を使用して Excel のセルに改行を挿入する際、vbCrLfを用いると正しく改行されます。ただし、Excel のセル内で Alt + Enter キーを使って手動で改行を行うと、内部的にはvbLfが使用されます。

ファイル入出力での改行

ファイルへの書き込みや読み込み時、改行コードの扱いに注意が必要です。Windows では CRLF が標準ですが、Unix 系システムでは LF のみが使用されます。したがって、異なるシステム間でファイルをやり取りする場合、改行コードを適切に変換する必要があります。

Sub WriteToFile()
    Dim fileNum As Integer
    Dim text As String
    fileNum = FreeFile
    Open "C:\example.txt" For Output As #fileNum
    text = "この行で終了" & vbCrLf & "次の行が始まります。"
    Print #fileNum, text
    Close #fileNum
End Sub
注意点

改行コードの違いにより、異なるプラットフォーム間でテキストファイルをやり取りする際に問題が発生することがあります。例えば、Windowsで作成したファイルをUnixシステムで開くと不適切な改行として認識されることがあります。

まとめ

VBA でテキストを扱う際、改行コードの違いを理解することは重要です。vbCrLfを使うのが一般的ですが、特定の状況でvbCrvbLfを使う必要がある場合もあります。異なるシステム間でのファイルのやり取りでは、改行コードの変換に注意を払いましょう。これにより、プログラムの互換性を向上させ、予期しないエラーを回避することができます。

#VBA #改行コード #CR #LF #vbCrLf