プロが教えるわが家の防犯対策術!

マクロ・VBA初心者です。
〈VBA・マクロでのテキストファイル作成方法に関しての質問です〉


経費精算のExcelデータを画像のような「"",]で区切ったテキストファイルを作成するマクロを作りたいと考えてます。



完成イメージ:マクロを登録したボタンを押すとテキストファイルの形でフォルダに作成される。もしくは、マクロボタンを押すとテキストファイルの形で区切ったものが表示されるものを作りたいです。


〈捕捉情報〉
*経費精算データに関してA列からX列まであり、集計データにより列にデータを埋めていく作業が入っております。なので、A列からX1列まででデータが記入されている範囲で集計できるようにしたいと考えております。


現在は、勉強しつつ組み立てた結果、
CSVのExcelファイルをフォルダの中に作成できるようになりました。
(コードは下記に記載します)
ただ、テキストファイルが作れるコードができていないのが問題です。

このコードをどのように変えればよいのか?
もしくは、別のコードで出来るようならば教えていただけると嬉しく思います。

宜しくお願いします。



______________________________
〈コード〉


Option Explicit
Sub ExcelファイルCSV形式作成()
'変数宣言
Dim filePath As String
Dim i As Long
Dim maxRow As Long
Dim fileNo As Integer

'初期値設定
filePath = ActiveWorkbook.Path & "\経費計算エクセル(CSV保存).csv"
maxRow = Range("A1").End(xlDown).Row '最終行取得
fileNo = FreeFile 'FreeFile関数で使用可能なファイル番号取得

'ファイル開く
Open filePath For Output As #fileNo

'最終行までループ
For i = 1 To maxRow
'列の数は決め打ち
Write #fileNo, Cells(i, 1), Cells(i, 2), Cells(i, 3), Cells(i, 4), Cells(i, 5), Cells(i, 6); Cells(i, 7), Cells(i, 8), Cells(i, 9); Cells(i, 10), Cells(i, 11), Cells(i, 12); Cells(i, 13), Cells(i, 14), Cells(i, 15); Cells(i, 16), Cells(i, 17), Cells(i, 18); Cells(i, 19), Cells(i, 20), Cells(i, 21); Cells(i, 22), Cells(i, 23), Cells(i, 24)

Next i

'ファイル閉じる
Close #fileNo
End Sub

__________________________

「VBA・マクロに詳しい方お願いします!〈」の質問画像

A 回答 (3件)

「A列からX1列までで」は「A列からX列までで」ですよね。


とりあえず同じように作成してみました。
--------------------------------------------------------------------
Sub ExcelファイルTXT形式作成()
'変数宣言
Dim filePath As String
Dim i As Long
Dim j As Long
Dim s As String
Dim maxRow As Long
Dim fileNo As Integer

'初期値設定
filePath = ActiveWorkbook.Path & "\経費計算エクセル(TXT保存).txt"
maxRow = Range("A1").End(xlDown).Row '最終行取得
fileNo = FreeFile 'FreeFile関数で使用可能なファイル番号取得

'ファイル開く
Open filePath For Output As #fileNo

'最終行までループ
For i = 1 To maxRow
s = ""
For j = 1 To 23
s = s & Chr(34) & Cells(i, j).Value & Chr(34) & ","
Next
s = s & Chr(34) & Cells(i, j).Value & Chr(34)
'列の数は決め打ち
Print #fileNo, s
Next i

'ファイル閉じる
Close #fileNo
End Sub

--------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございます。無事できました。

お礼日時:2016/05/21 22:44

↓ の説明です。


「i」は行番号です。
「j」は列番号です。(「X列」までで最後の「,」が不要なので23+1までとしました。)
「s」は1行分の文字列です。(For~Next の方がコードが短くなるので、いったん文字列へ代入しましたが、もちろんダラダラ~と書いても良いです。)
「Write」→「Print」の理由は自分の好きな書式に出来るためです。
「Chr(34)」は「"」の事です。
後は、元のコードを生かしたつもりなので説明不要かと…
    • good
    • 0
この回答へのお礼

ほんとに何から何までご丁寧に解説ありがとうございます。
非常に勉強になりました。

お礼日時:2016/05/21 22:46

文字列は「"」で括って、区切り記号は「,」を使うという事でしょうか?

    • good
    • 0
この回答へのお礼

説明不足で申し訳ございません。
おっしゃる通り、文字列は「"」で括って、区切り記号は「,」を使うという意味です。

お礼日時:2016/05/21 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!