関数は自分で作る

テキストファイルの処理 メモ帳、CSV形式も

Excelは、メモ帳などが扱うテキストファイルも使える。

Workbooks.Openメソッドでテキストファイルを呼び込む。このメソッドはテキストファイルを呼び込めばマクロ記録でコードを得ることができる。上書き保存はSaveメソッドがある。ファイル名を指定する場合は、SaveAsメソッドがある。

ドキュメントフォルダにa.txtをメモ帳で作成してからExcelでこれを読み込む。メモ帳の中身はTABキーを入れるとExcelのシートでは、別の列に入る。改行で次の行に入る。

イミディエイトウィンドウ

?vba.CurDir     'カレントフォルダを調べる
C:\Users\take\Documents  'VBAのカレントフォルダの初期値はドキュメントフォルダ takeはユーザー名
excel.Workbooks.Open "a.txt"      'a.txtファイルのデータがA列に入る
excel.Workbooks(1).Save   ‘上書き。1かどうかは「?excel.Workbooks(1).Name」で要確認
excel.Workbooks(1).SaveAs "b.txt"  '別の名前で保存する
‘フルパスで呼び込む場合
?vba.CurDir & "\a.txt"           'a.txtファイルをC:\からの文字列になるか確認
C:\Users\take\Documents\a.txt
excel.Workbooks.Open curdir & "\a.txt"      '\を付ける
練習:CSV形式で表を保存してからExcelで表示する

CSV形式とは、以下の特徴がある。
1,テキストファイルなのでメモ帳でも読み込み、保存できる。
2,コンマ区切りで列を、改行コードを1行とする表形式のデータ
ExcelでもCSV形式を呼び込み、保存できる。

以下はイミディエイトウィンドウ

excel.Workbooks.Open "a.csv"

3行目のB、C列は2,000のつもりでも””で囲まないと別のセルになる。

Excel側のC3に「2,000」と入れる。

?excel.Application.Workbooks(1).Name  'ファイル名を確認
a.csv
excel.Application.Workbooks(1).save  '上書き保存

メモ帳でa.csvを開く(ショートカットメニューの編集かメモ帳を開いておいてa.csvファイルをドラッグ)とには”2,000”になる。

練習:Excelの表をCSV形式で保存する。

Sheet1の表形式のデータをcsv形式で保存する。SaveASメソッドを使う。マクロ記録では以下のようになっている。以下はイミディエイトウィンドウ。「:=」は名前付き引数で順番に引数を入れてもいいが、引数名があると読みやすい。

    ActiveWorkbook.SaveAs Filename:="C:\Users\take\Documents\名簿.csv", FileFormat _
        :=Excel.xlCSV, CreateBackup:=False

名前付き引数にせず第一引数のファイル名はCurDirを使って保存するファイル名を指定した。丁寧にSaveAsで名前を指定して保存する。

Sheet1.SaveAs vba.CurDir & "\名簿.csv"

メモ帳で表示する。イミディエイトウィンドウでメモ帳を起動する。

shell "notepad 名簿.csv",vbNormalFocus

以下は、体験のために使うデータ。

a.txtのデータ
1234	333
abcde	ddd	

a.csvのデータ
12,3,4
aa,kk,ff
"1,000",2,000

モバイルバージョンを終了