昨日の同好会で、「宛名を印刷したい人は、Wordで「氏名」「郵便番号」「住所」を順に入力してくれば、後はなんとかする」と言ってシマッタ!!
なんとかするにはどうすればいいか‥‥ 昨夜布団の中で考えていたら、今朝4時に目が覚め‥‥眠れない。ノコノコ起き出して、テキストファイルをCSVに変換するVBA(マクロ)をExcelで作成した。
§Excel VBA
Option Explicit Public Sub Auto_Open() Dim ds1 As Long, ds2 As Long, i As Long Dim inpData As String, outData As String Dim inpFile As String, outFile As String inpFile = ThisWorkbook.Path & "\TextFile.txt" outFile = ThisWorkbook.Path & "\CSVFile.csv" ds1 = FreeFile Open inpFile For Input As #ds1 ds2 = FreeFile Open outFile For Output As #ds2 Do While Not EOF(ds1) outData = "" For i = 1 To 3 If EOF(ds1) Then Exit For Line Input #ds1, inpData outData = outData & ",""" & Trim(inpData) & """" Next If Left(outData, 1) = "," Then outData = Mid(outData, 2) Print #ds2, outData Loop Close ds1, ds2 Application.Quit End Sub
§手順
これは、当日のための自分の備忘録(記憶より記録)だ。
- “住所録”フォルダを作り、次のファイルを置く(基本)
- ユーザーが作成したWord文書
- Text2CSV.xls (Excelマクロ)
- 宛名印刷.doc (Wordの宛名書きウィザードで作成した文書)
- Word文書を開く
- 先頭に項目名を入れる。
- 例えば、“氏名”[Enter],“郵便番号”[Enter]、“住所” だ。
- 文末に余計な段落記号があれば削除しておく。
- ファイル名:“TextFile”,ファイルの種類:“書式なし (*.txt)”で出力する。
- Text2CSV.xlsを開く。
- 直ぐ終わる‥‥はずだ。
- CSVFile.csvを開く。
- 補完する。
- 列に “欠礼”,“連名”,“住所2”,“桁1”を追加する。
- 「住所」にマンション名があれば、「住所2」に移す。
- 列幅の最適化。
- ファイル名:“住所録”,ファイルの種類:“Microsoft Office Excel ブック (*.xls)”で出力する。
- 宛名印刷.doc を開く。
- 関連付けを修正する。
参考にしたサイト
§テキストファイルを操作する (Office TANAKA)
- カンマで区切られたデーををセルに代入する
- Dim buf As Variant, tmp As String
- Line Input #n, tmp
- buf = Split(tmp, ",")
- Worksheets("Sheet1").Range("A1:D1") = buf
- Binary モードを使うと一瞬で終る
- Dim buf As String
- TargetFile = "C:\config.sys"
- buf = Space(FileLen(TargetFile))
- ファイルと同じサイズの場所を確保する。(必須)
- Open TargetFile For Binary As #n
- Get #n, , buf
- 一気に読み込む。
- Worksheets("Sheet1").Range("A1") = buf
※ 上記 2.のまね事を行ってみた。
-
- メモ帳てカンマ区切りのデータを作る。
- 全てコピーする。
- Excel を起動する。
- セル A1 に貼り付ける。
- [貼り付けオプション]スマートタグ ⇒[テキストファイルウィザードを起動する]をクリックする。
- カンマ区切りを指定する。
- Wordのデータでは出来ない
- [貼り付けオプション]で[テキストファイルウィザードを起動する]が出ない。これは、書式もコピーされるためであろう。
- メモ帳であれば、カンマは全角でもOK
- 但し、[テキストファイルウィザードを起動する]で、「区切り文字」を「その他」にし、全角カンマを指定する必要がある。
- 参考)Wordで読点「、」区切りで入力した住所録を Excelブックに変換する例