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
(Visited 383 times, 1 visits today)