人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAの質問です。
セルB1から始まるセル範囲とセルB9から始まるセル範囲をセミコロン区切りにし、尚かつ各行の最後にもセミコロンを追加し一つのテキストファイル(.txt)として出力するマクロをどなたかご教授いただけないでしょうか。前述の二つのセル範囲の間には必ず空白行が存在します。そのまま使えるマクロをご提供くださった方にお気持ちですが、500ポイント差し上げたいと思います。宜しくお願いいたします。

●質問者: tororosoba
●カテゴリ:コンピュータ
✍キーワード:txt VBA エクセル セミコロン セル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● HALSPECIAL
●100ポイント

こちらでいかがでしょうか?

Option Explicit

Private Const OUTPUT_FILE As String = "D:\hoge.txt"  '出力ファイル名
Private Const RANGE_AREA As String = "B1:B9"
Private Const SPACE_COL_PASS_FLAG As Boolean = False  'スペース行を飛ばす場合はTrueにする

Public Sub ファイル出力()
 Dim fso, f
 Dim c As Range
 Dim line As String
 
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set f = fso.CreateTextFile(OUTPUT_FILE, True)

 For Each c In ActiveSheet.Range(RANGE_AREA)
 If SPACE_COL_PASS_FLAG Then
 If c.Value <> "" Then
 line = line & c.Value & ";"
 End If
 Else
 line = line & c.Value & ";"
 End If
 Next c
 
 f.WriteLine line
 f.Close
 Set f = Nothing
 Set fso = Nothing
End Sub


◎質問者からの返答

HALSPECIALさん、いつもありがとうございます。

私の説明不足で大変に申し訳ございません。実際は以下のようなテキストの出力を希望しております。

お教えいただけると助かります・・。

エクセルシート

A B C D

1 50 50 50

2 50 50 50

A B C D

9 40 40 40

10 40 40 40

テキストファイル中身

50;50;50;

50;50;50;

40;40;40;

40;40;40;


2 ● SALINGER
●500ポイント ベストアンサー
Sub test()
 Dim r As Range
 Dim s As String
 Dim i As Long
 Dim intF As Integer
 
 intF = FreeFile
 i = 1
 For Each r In Range("B1").CurrentRegion
 If r.Row = i Then
 s = s & r.Value & ";"
 Else
 s = s & vbNewLine & r.Value & ";"
 i = r.Row
 End If
 Next r
 
 For Each r In Range("B9").CurrentRegion
 If r.Row = i Then
 s = s & r.Value & ";"
 Else
 s = s & vbNewLine & r.Value & ";"
 i = r.Row
 End If
 Next r
 
 Open ThisWorkbook.Path & "\res.txt" For Output As #intF
 Print #intF, s
 Close #intF
End Sub
◎質問者からの返答

SALINGERさん、ありがとうございました。確認させていただきました!緊急でしたので、非常に助かりました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ