フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CRとLFの世界

PCの世界には派閥がありまして。
UNIX系vsWindows系の抗争が現在でも続いております。

それらの抗争は目に見えないところで起きています。
たとえば、改行コード。これはとても厄介です。

Windowsの世界では改行コードは「CR+LF」
Unixの世界では「LF」
であり、文字列が両方の世界を行ったり来たりするときには
改行コードの変換が処理されていたりするわけです。

そこで今日はさらに、MS-Excelの世界の不思議発見。ここでの改行コードは「LF」なのだそうです。

たとえば、
"A1Q
BBB"

という文字列をExcelのセルに書いたとしましょう。
セルの中で改行されているように見えますね。
ここには実はLFが入っています。つまり、7文字で構成されています。

次に
"A1Q
BBB"

という文字列ですが、これは実はCR+LFです。
実は、こっちは8文字になります。

どうですか。目に見えない世界は恐ろしいでしょう?

そこで、見えないものを見えるようにする「姿現し」の術が必要になってくるのです。

上記の2つの文字列をセルA1とA2に置きます。
そこでサンプルソース。

Sub Macro1()
  Dim i, j, iLen, iRow As Integer
  Dim ConvString As String

  iRow = 1 '評価する文字列の列

  For i = 1 To 2 '1行目~2行目を処理
    ConvString = Cells(i, iRow).Value '文字列の取得
    iLen = Len(ConvString) '文字列長の取得
    For j = 1 To iLen '文字列の先頭から末尾まで
      '1文字づつ文字コードに変換する
      Cells(i, j + 1).Value = Asc(Mid(ConvString, j, 1))
    Next
  Next
End Sub


このマクロを流すと、文字コードをセルの2列目移行に出力します。
65 49 81 10 66 66 66
65 49 81 13 10 66 66 66
みたいな結果になります。

CR = 10 (0x0a)
CR+LF = 13,10 (0x0d,0x0a)

が見えました。これにて、姿現しの術が完成となりました。
めでたしめでたし。
(つづく)

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。