マクロ・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
__________________________
No.2ベストアンサー
- 回答日時:
「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
--------------------------------------------------------------------
No.3
- 回答日時:
↓ の説明です。
「i」は行番号です。
「j」は列番号です。(「X列」までで最後の「,」が不要なので23+1までとしました。)
「s」は1行分の文字列です。(For~Next の方がコードが短くなるので、いったん文字列へ代入しましたが、もちろんダラダラ~と書いても良いです。)
「Write」→「Print」の理由は自分の好きな書式に出来るためです。
「Chr(34)」は「"」の事です。
後は、元のコードを生かしたつもりなので説明不要かと…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列の結合を空白行まで実行
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
Changeイベントでの複数セルの...
-
VBAを使って検索したセルをコピ...
-
エクセルでフォームのチェック...
-
VBA 値と一致した行の一部の列...
-
VBAで、特定の文字より後を削除...
-
VBAで10行おきにセルの下に罫線...
-
VBAコンボボックスで選択した値...
-
データグリッドビューの一番最...
-
マクロ 最終列をコピーして最終...
-
VBAのFind関数で結合セルを検索...
-
rowsとcolsの意味
-
空白セルをとばして転記
-
追記する列を増やしたい 2つの...
-
【VBA】複数行あるカンマ区切り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報