Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4862 / 13644 ツリー ←次へ | 前へ→

【53974】固定長100バイトで改行 まんじゅう 08/2/19(火) 13:50 質問[未読]
【53975】Re:固定長100バイトで改行 VBWASURETA 08/2/19(火) 14:07 回答[未読]
【53976】Re:固定長100バイトで改行 まんじゅう 08/2/19(火) 14:26 発言[未読]
【53984】Re:固定長100バイトで改行 VBWASURETA 08/2/19(火) 16:12 発言[未読]
【53990】Re:固定長100バイトで改行 まんじゅう 08/2/19(火) 17:02 お礼[未読]

【53974】固定長100バイトで改行
質問  まんじゅう  - 08/2/19(火) 13:50 -

引用なし
パスワード
   エクセルのマクロでコマンドボタンを押すと
マクロを作成したフォルダの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
-------------------------------------------------------------------------

【53975】Re:固定長100バイトで改行
回答  VBWASURETA  - 08/2/19(火) 14:07 -

引用なし
パスワード
   こんにちは。

Print #

から

Write #

にしてみては?

区切りの""ができてしまいますが、空白は入るはずです。

【53976】Re:固定長100バイトで改行
発言  まんじゅう  - 08/2/19(火) 14:26 -

引用なし
パスワード
   Writeにしてもだめでした。

先ほど記載した文面に誤りがありました。
最終行にはスペースが入ります。
途中の行を88バイトにして残り22バイトを半角スペース
しても改行は88バイトで入ってしまいます。

【53984】Re:固定長100バイトで改行
発言  VBWASURETA  - 08/2/19(火) 16:12 -

引用なし
パスワード
   ▼まんじゅう さん:
見ていて気づいたのですけど。

Trim関数使用されてますよね?
Trim関数は空白を取ってしまうのでその部分変更すれば良いかと。

【53990】Re:固定長100バイトで改行
お礼  まんじゅう  - 08/2/19(火) 17:02 -

引用なし
パスワード
   ▼VBWASURETA さん:

解決しました。
ありがとうございます!

4862 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free