Excel VBA テキストファイルを読み込んでワークシートの一致する文字列をマーキングする
何かリストを何らかの条件で分別していて、途中で該当するセルだけをマーキングしたいというニーズがある、と思う。
とくにだれか他の人に作業経過を連絡したいときなどだ。
テキストエディタで作業して、中間ファイルを得たとする。 この場合はテキストファイルをExcelに読み込んでから、マーキング処理をするという具合になる。
テキストの文字コードがつまずきポイントだ。
ふつうテキストはUTF-8なので、VBAでもそれに応じた読み取り方をする必要がある。
Function ReadUTF8Text(fileFullPath As String) As Variant Dim buf As String With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile fileFullPath buf = .ReadText .Close End With ReadUTF8Text = Split(buf, vbCrLf) End Function
ADODB.StreamのCharsetプロパティで読み取るテキストファイルの文字コードを指定できる。
1行ずつ読んでString型変数に入れ、最後まで終わったらVariant型にvbCrLrをデリミタとしてSplitしてやると、1行ごとに要素が分かれた配列が得られる。
あとは、for eachループでまわせば好きに処理できる。