|
エクセルのマクロでコマンドボタンを押すと
マクロを作成したフォルダのtest.txt(固定長、改行なし)
をよみこみ、100バイトずつで改行し、それをout.txtで出力する
VBAを作成しました。その時に読み込むファイルのtest.txtに半角スペースが
入っていた場合、out.txtに出力する方法はありますでしょうか。
現在のモジュールだと、100バイトで区切った場合、半角スペースが
表示されず、最終文字のすぐ後に改行がつきます。
作成したモジュールを添付します。
test.txt内容
11111111111111...1111□□□□2222222222.....222222222333.....333□
out.txt内容
現在)
11111....1改行
22222....2222改行
33333....333改行
改善)
11111....□□□□改行
22222....2222改行
33333....333□改行
-------------------------------------------------------------------------
Sub CommandButton1_Click()
Dim nYLINE As Integer
Dim IN_FNO%, OUT_FNO%
Dim Position As Long
Dim strREADBUF As TYPERecord
IN_FNO = FreeFile '空いているファイル番号を取る
' test.txt ファイルを ランダム アクセス モードで開きます。
Open ActiveWorkbook.Path & "\test.txt" For Random Access Read As #IN_FNO Len = 100
'出力先 out.txt を シーケンシャル ライト モードで開きます
OUT_FNO = FreeFile
Open ActiveWorkbook.Path & "\out.txt" For Output As #OUT_FNO
'変数初期化
n = 1 ' レコード番号を定義します。
nYLINE = 2 '見出しを抜かして、2行目から処理
While EOF(IN_FNO) = False
' Get ステートメントを使って、サンプル ファイルを読み込みます。
Get #IN_FNO, n, strREADBUF ' n番目のレコードを読み込みます。
'読み込まれたデータを書き込むCSVにする、、、
'カンマだけ付ける””は好みで?
Print #OUT_FNO, Trim(strREADBUF.漢字氏名)
'カウントアップ
n = n + 1
nYLINE = nYLINE + 1
Wend
Close #IN_FNO ' ファイルを閉じます。
Close #OUT_FNO
'結果をメモ帳表示
Shell "notepad.exe " & ActiveWorkbook.Path & "\out.txt", vbNormalFocus
End Sub
-------------------------------------------------------------------------
(module1)
Type TYPERecord 'ユーザー定義型を定義します。
漢字氏名 As String * 1 '
End Type
-------------------------------------------------------------------------
|
|