.net column

.NET開発者のためのブログメディア

VBAの改行コードとは?ExcelVBAのセル内改行コード|ExcelVBAサンプルプログラム

 
SE
VBAとExcelの改行コードはどこが違うのですか。
PM
VBAの改行コードは基本的にはCR+LFが用いられますが、Excelのセル内改行コードはLFのみが使われます。

VBAの改行コードとは?


VBAとはVisual Basic for Applicationsの略でExcelなどのMicrosoft Officeのアプリケーションで利用できるプログラミング言語の1つです。Visual BasicはGUIに対応した言語で、それをExcelやWordなどのアプリケーションでも操作できるように機能拡張した言語がVBAです。

改行コードとは改行を表す文字コードのことを指します。WindowsではCR+LF、MacintoshではCR、Linux(UNIX)ではLFが多く使用されています。

CRはキャリッジリターンのことで10進数で表すと13、16進数で表すと0Dです。LFはラインフィードのことで10進数で表すと10、16進数で表すと0Aとなります。これらは制御コードと呼ばれる文字コードです。

VBAの改行コードはWindowsのCR+LFが基本です。ただし、Excelのセル内改行のように特殊な場合だけLFを用いることもあります。

文字コードとは?

コンピュータは数値しか認識できません。そのため文字を認識させるために文字ひとつひとつに対して特定の数値を割り当てました。これが文字コードです。

文字コードにはいくつか種類がありますが、7ビットの文字コードのひとつにASCIIコードというものがあります。ASCIIコードは日本のパソコンでは多く使われていました。現在のパソコンで使われているUNICODEにもASCIIコードと同等の文字セットが含まれています。

ExcelVBAのセル内改行コード

Excelでセル内改行するにはAlt+Enterキーを押します。このとき入力される文字コードはvbLf(LF)です。

以下にExcelVBAマクロのサンプルプログラムとしてA1セルに入力した文字列の文字コードを表示するプログラムをご紹介します。A1セルにAlt+Enterキーを押して改行コードを入力し、0A(LF)が表示されるのをご確認ください。

Excelの改行コード1

Excelでは基本的にCR+LFを改行コードとして扱っているようですが、CRのみやLFのみでも改行コードとして受け付けてくれます。

実際に以下のサンプルプログラム(Sample2~Sample4)を実行してcsvファイルを作成し、Excelで開いてみてください。

ファイルをダブルクリックしてExcelに読み込ませると、ほぼ期待通りに表示されるでしょう(CRのみの改行コードのときは読み込んだだけでは正しく表示されませんでしたが、セルをダブルクリックすると正しく改行されました)。

どういうことかと申しますと、適当なタイミング(ファイル読み込み、コピー&ペースト、ダブルクリックなど)でExcel内部の改行コードが適切に置換されているということだと言えます。

ただ1点、注意すべきところがあります。Excelでのセル内改行はLFのみとしないとVBAで処理する際に不具合が出ることがあるようです。

ExcelVBAサンプルプログラム

以下のサンプルプログラム(Sample2~Sample4)はA1セルに入力されている文字列の改行コードを換えてcsvファイルとして出力するものです。なお、出力されたファイルの内容を正確にご確認頂くにはバイナリファイルエディタを用いるとよいでしょう。

Excelの改行コード2

Excelの改行コードをVBAマクロから直接セルに入力してどうなるかを検証してみます。

以下のサンプルプログラム(Sample5)はA2~A5セルに異なる改行コードを入れた文字列を出力しています。結果は、ほぼ期待通りに改行されます(CRのときだけダブルクリックしないと改行されません)。

WordVBAでの改行コード

WordVBAマクロでも改行コードはExcelVBAマクロと同じ扱いです。ファイル読み込み時に改行コードがCR+LF以外(CRのみ、またはLFのみ)のテキストファイルのときでも適切に変換されて読み込まれます。

サンプルプログラム(Sample2~Sample4)を実行して、改行コードを換えたファイルを実際にWordで読み込んでみるとご理解頂けるでしょう。

WordVBAサンプルプログラム

以下のサンプルプログラム(SampleW1~SampleW4)は、それぞれテキストに埋め込む改行コードを換えているVBAマクロですが、いずれも同じ結果になることが確認できます。

SE
WordVBAマクロでも改行コードはExcelVBAマクロと同じ扱いなのですね。
PM
そのとおりです。ただ、VBAを用いる場合にはExcelのセル内改行はLFのみとし、その他は特に理由がない限りCR+LFに統一した方が良いです。

改行コードの扱い方


以上、VBAの改行コードについて述べてきました。

ExcelやWordでは、いずれの改行コードでも適当なタイミングで適切な改行コードに変換されますので、他のアプリケーションで読み込ませるなどする時だけ、そのアプリケーションで扱える改行コードに変換してファイルを出力してやれば良いということになります。

ただし、適切に変換されるからといってむやみに改行コードを換えて記述するのは良くありません。VBAを用いる場合にはExcelのセル内改行はLFのみとし、その他は特に理由がない限りCR+LFに統一した方が良いでしょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags