作成日 2005/6/19
最終更新日 2005/10/20

Mac OS Xで作ったテキストファイルを読込む時は注意が必要

 Mac OS X での改行コード
CR(Mac OS 9以前での改行コード)でもなく、
CR+LF(Windowsでの改行コード)でもなく、
LF(UNIXでの改行コード)。
 で、そのためかMac OS Xで作ったテキストファイルから
Line Input#ステートメントを使って1行ずつ文字列を読込む事ができないみたい。

1.Line Input#ステートメントを使ってみた
2.VBAからテキストファイルを出力したら改行コードはどうなるんだろう
3.で、どうすればいいの?

1.Line Input#ステートメントを使ってみた

 Mac OS XのSimpleText,Mac OS 9のSimpleText,Windows XP のメモ帳でテキストファイルをつくって、Excel X for MacについているVBAで読込んだ。

テキストファイルを作った環境
ファイルの中身
ファイルの中身
(文字コード)
Line Input#ステートメントで
1行目だけを読込んだ結果
OS
使用アプリケーション
Mac OS X
Ver. 10.3.9
SimpleText line1
line2
6C 69 6E 65 31 0A 6C 69 6E 65 32
line1
line2
Mac OS 9
Ver. 9.2.2
SimpleText line1
line2
6C 69 6E 65 31 0D 6C 69 6E 65 32
line1
Windows XP
Home Edition
メモ帳
line1
line2
6C 69 6E 65 31 0D 0A 6C 69 6E 65 32
line1

 Line Input # ステートメントを使用してテキストファイルから文字列を読込むとき、改行コードがLF(UNIXでの改行コード)だと、改行と見なされずに、次の行まで読込んでしまうみたい。

このページのトップへ

2.VBAからテキストファイルを出力したら改行コードはどうなるんだろう

 ということで、やってみた。
改行コードの
出力方法
Print #ステートメントを2回実行して、改行コードを調べる。
vbNewLineも出力してみる。
ソース Print #lngFileNo,"aaa" & vbNewLine & "aaa"
Print #lngFileNo,"bbb"

で、結果。
実行環境
改行コード
Excel X for Mac
CR(Mac OS 9での改行コード)
Excel 2003
CR+LF(Windowsでの改行コード)

どうやら、改行コードがLF(UNIXでの改行コード)で出力される事はないみたい。

このページのトップへ

3.で、どうすればいいの?

 だるまが考えた方法をあげておく。
(テキストファイルの代わりに、レジストリ(Windows)、初期設定ファイル(Mac)やマクロが入ったブックのワークシートを使う方法はここでは考えない。)
 もっといい方法を考えついた人はメールか掲示板へ書き込みをお願いします。

項番
方法
コメント
1
Windowsでのみ動くマクロやアドインにする。  これが一番楽だけど、、、。
 だるまとしては止めてほしい。
 マクロやアドインを使う人に、「テキストファイルを編集する時は改行コードに注意してね。」とお願いする必要があると思う。
2
テキストファイルを編集するマクロを作る。  マクロからテキストファイルを出力した場合、改行コードがLF(UNIXでの改行コード)にならないことを利用する。

 だけど、余計にマクロを作ることになるかも。
 面倒臭い。
 マクロやアドインを使う人に、「テキストファイルを編集するな。」ってお願いする必要があると思う。
3
1、複数の改行コードが混在しているかもしれないので、Line Inputステートメントを複数回つかって、とにかくファイルの中身を全部読む。
(すべての行をCR区切りで連結させながら読込む。)
2、すべてのLFをCRに置換(※1)。
3、その後、Split関数(※2)でも使って適当に解析。
結構面倒くさい。

※1:Replace関数を使う。(※2)
※2:Excel X for Macに付属しているVBAにはないので自作する。
(なんでないかと言うとVBAのバージョンが5.00だから。)

Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。