Excel VBA 質問スレッド №2134 (解決済)
CSV作成時に行の最後の文字がつけれません
投稿者 : VBA始めました 投稿日時 : 2025/07/03(Thu) 14:03:12 OS : Windows 11 EXCEL : Excel 2007
お疲れ様です。先日はお世話になりました。
2回目の投稿です。お手数ですがお付き合いのほど宜しくお願い致します。
以下に該当のExcelシートのCSVを作るコードを書きました。
ただ行の最後に;を付けることができません。どのようにすれば最後の文字を追記できますか?
よろしくご教授のほどよろしくお願い致します。
お疲れ様です。先日はお世話になりました。
2回目の投稿です。お手数ですがお付き合いのほど宜しくお願い致します。
以下に該当のExcelシートのCSVを作るコードを書きました。
ただ行の最後に;を付けることができません。どのようにすれば最後の文字を追記できますか?
よろしくご教授のほどよろしくお願い致します。
Sub ExportCustomCSV() Dim ws As Worksheet Dim fileName As String Dim cellValue As String Dim fileNum As Integer Dim rowNum As Long Dim colNum As Long Dim lastRow As Long Dim lastCol As Long Set ws = ThisWorkbook.Sheets("シート名") fileName = ActiveWorkbook.Path & "\" & ws.Name & ".csv" ' ファイル番号の取得 fileNum = FreeFile ' CSVファイルのオープン Open fileName For Output As fileNum ' 最終行と最終列を取得 lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' シートのデータをカスタムでCSV形式に書き出し For rowNum = 1 To 1 cellValue = "" For colNum = 1 To lastCol cellValue = cellValue & ws.Cells(rowNum, colNum).Value If colNum < lastCol Then cellValue = cellValue & ";" ' カンマを追加 End If Next colNum Print #fileNum, cellValue Next rowNum ' 最終行と最終列を取得 lastRownext = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row lastColnext = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column ' シートのデータをカスタムでCSV形式に書き出し For rowNum = 2 To lastRownext cellValue = "" For colNum = 1 To lastColnext cellValue = cellValue & ws.Cells(rowNum, colNum).Value If colNum < lastColnext Then cellValue = cellValue & ";" ' カンマを追加 End If Next colNum Print #fileNum, cellValue Next rowNum ' ファイルを閉じる Close fileNum End Sub
スポンサーリンク
[返信 1] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : ごんぼほり 投稿日時 : 2025/07/03(Thu) 17:28:24
CSVはカンマ区切りですが、";"セミコロン区切りにしたいのですか?
>ただ行の最後に;を付けることができません
行末に区切り文字を追加したら、最後に空白列ができることになりますが、それでいいのですね?
If colNum < lastCol Then
cellValue = cellValue & ";" ' カンマを追加
End If
をIfステートメント使わないで
cellValue = cellValue & ";" ' セミコロンを追加
とすれば、いいと思います
CSVはカンマ区切りですが、";"セミコロン区切りにしたいのですか?
>ただ行の最後に;を付けることができません
行末に区切り文字を追加したら、最後に空白列ができることになりますが、それでいいのですね?
If colNum < lastCol Then
cellValue = cellValue & ";" ' カンマを追加
End If
をIfステートメント使わないで
cellValue = cellValue & ";" ' セミコロンを追加
とすれば、いいと思います
[返信 2] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : ピロリ 投稿日時 : 2025/07/03(Thu) 19:19:05
下は余談です。
CSV(comma-separated values)は、カンマ区切りの下のようなテキストファイルです。
データ間には区切り文字の「,」が有りますが、行の最後に「,」は有りません。改行コードです。
CSVファイル(*.csv)は、直接Excelで開くことができ、編集や保存も可能です。
1,2,3,4,5,6
11,12
13,14
一方、VBA始めましたさん のは SSV(Semicolon-Separated Values)で、通常なら下のような
テキストファイルで CSVと同様に行の最後に「;」は付けません。改行コードのみ。
どうしても 行の最後に「;」を付けたいのなら、ごんぼほりさん のご回答の通りです。
1;2;3;4;5;6
11;12
13;14
ちなみに私なら、もはや CSVではないのですから、拡張子に .csvは付けません。
今回のようなテキストファイルなら .txtあたりでしょうか・・・
下は余談です。
CSV(comma-separated values)は、カンマ区切りの下のようなテキストファイルです。
データ間には区切り文字の「,」が有りますが、行の最後に「,」は有りません。改行コードです。
CSVファイル(*.csv)は、直接Excelで開くことができ、編集や保存も可能です。
1,2,3,4,5,6
11,12
13,14
一方、VBA始めましたさん のは SSV(Semicolon-Separated Values)で、通常なら下のような
テキストファイルで CSVと同様に行の最後に「;」は付けません。改行コードのみ。
どうしても 行の最後に「;」を付けたいのなら、ごんぼほりさん のご回答の通りです。
1;2;3;4;5;6
11;12
13;14
ちなみに私なら、もはや CSVではないのですから、拡張子に .csvは付けません。
今回のようなテキストファイルなら .txtあたりでしょうか・・・
[返信 3] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : VBA始めました 投稿日時 : 2025/07/04(Fri) 12:48:34
■[返信 1] ごんぼほりさん(2025-07-03 17:28:24)の記事
> CSVはカンマ区切りですが、";"セミコロン区切りにしたいのですか?
はいその通りです。
> >ただ行の最後に;を付けることができません
> 行末に区切り文字を追加したら、最後に空白列ができることになりますが、それでいいのですね?
ありがとうございます。
>
> If colNum < lastCol Then
> cellValue = cellValue & ";" ' カンマを追加
> End If
> をIfステートメント使わないで
> cellValue = cellValue & ";" ' セミコロンを追加
> とすれば、いいと思います
ありがとうございました。
ご回答頂きありがとうございました。
数日出先ですので普段と違う環境で失礼致します。
戻りましたら確認致します。
■[返信 1] ごんぼほりさん(2025-07-03 17:28:24)の記事
> CSVはカンマ区切りですが、";"セミコロン区切りにしたいのですか?
はいその通りです。
> >ただ行の最後に;を付けることができません
> 行末に区切り文字を追加したら、最後に空白列ができることになりますが、それでいいのですね?
ありがとうございます。
>
> If colNum < lastCol Then
> cellValue = cellValue & ";" ' カンマを追加
> End If
> をIfステートメント使わないで
> cellValue = cellValue & ";" ' セミコロンを追加
> とすれば、いいと思います
ありがとうございました。
ご回答頂きありがとうございました。
数日出先ですので普段と違う環境で失礼致します。
戻りましたら確認致します。
[返信 4] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : VBA始めました 投稿日時 : 2025/07/04(Fri) 12:54:19
■[返信 2] ピロリさん(2025-07-03 19:19:05)の記事
> 下は余談です。
>
> CSV(comma-separated values)は、カンマ区切りの下のようなテキストファイルです。
> データ間には区切り文字の「,」が有りますが、行の最後に「,」は有りません。改行コードです。
> CSVファイル(*.csv)は、直接Excelで開くことができ、編集や保存も可能です。
>
> 1,2,3,4,5,6
> 11,12
> 13,14
>
> 一方、VBA始めましたさん のは SSV(Semicolon-Separated Values)で、通常なら下のような
> テキストファイルで CSVと同様に行の最後に「;」は付けません。改行コードのみ。
> どうしても 行の最後に「;」を付けたいのなら、ごんぼほりさん のご回答の通りです。
>
> 1;2;3;4;5;6
> 11;12
> 13;14
>
> ちなみに私なら、もはや CSVではないのですから、拡張子に .csvは付けません。
> 今回のようなテキストファイルなら .txtあたりでしょうか・・・
>
ご回答頂きありがとうございます。
私の作成した至らぬ文に痛み入ります。
本来ならば確認後、その報告も兼ねた返信を致すべきでしたが、数日あくため、返信だけさせていただきました。
お二人ともご回答頂きありがとうございました。
■[返信 2] ピロリさん(2025-07-03 19:19:05)の記事
> 下は余談です。
>
> CSV(comma-separated values)は、カンマ区切りの下のようなテキストファイルです。
> データ間には区切り文字の「,」が有りますが、行の最後に「,」は有りません。改行コードです。
> CSVファイル(*.csv)は、直接Excelで開くことができ、編集や保存も可能です。
>
> 1,2,3,4,5,6
> 11,12
> 13,14
>
> 一方、VBA始めましたさん のは SSV(Semicolon-Separated Values)で、通常なら下のような
> テキストファイルで CSVと同様に行の最後に「;」は付けません。改行コードのみ。
> どうしても 行の最後に「;」を付けたいのなら、ごんぼほりさん のご回答の通りです。
>
> 1;2;3;4;5;6
> 11;12
> 13;14
>
> ちなみに私なら、もはや CSVではないのですから、拡張子に .csvは付けません。
> 今回のようなテキストファイルなら .txtあたりでしょうか・・・
>
ご回答頂きありがとうございます。
私の作成した至らぬ文に痛み入ります。
本来ならば確認後、その報告も兼ねた返信を致すべきでしたが、数日あくため、返信だけさせていただきました。
お二人ともご回答頂きありがとうございました。
[返信 5] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : higeru 投稿日時 : 2025/07/04(Fri) 14:22:40
余談その2
私も CSV の C はカンマだろ-、と思っていましたが、以下 Wikipedia より抜粋。
----
類似したフォーマットとして、タブで区切られた tab-separated values (TSV) や、欧文間隔 (いわゆる半角スペース) で区切られた space-separated values (SSV) などがあり、これらをまとめて character-separated values (CSV)[1] や delimiter-separated values (DSV) などと呼ぶことも多い。
実際に、カンマ以外の文字で区切ったデータを「CSVファイル」として保存するソフトウェアもある。例えばフランス・ドイツ・イタリアなどのヨーロッパ諸国では、区切り文字にカンマではなくセミコロン(;)を使う慣習がある。これは小数点記号にピリオドではなくカンマを用いる文化であることも関与している。
余談その2
私も CSV の C はカンマだろ-、と思っていましたが、以下 Wikipedia より抜粋。
----
類似したフォーマットとして、タブで区切られた tab-separated values (TSV) や、欧文間隔 (いわゆる半角スペース) で区切られた space-separated values (SSV) などがあり、これらをまとめて character-separated values (CSV)[1] や delimiter-separated values (DSV) などと呼ぶことも多い。
実際に、カンマ以外の文字で区切ったデータを「CSVファイル」として保存するソフトウェアもある。例えばフランス・ドイツ・イタリアなどのヨーロッパ諸国では、区切り文字にカンマではなくセミコロン(;)を使う慣習がある。これは小数点記号にピリオドではなくカンマを用いる文化であることも関与している。
[返信 6] Re : CSV作成時に行の最後の文字がつけれません
投稿者 : VBA始めました 投稿日時 : 2025/07/08(Tue) 14:09:57
■[返信 5] higeruさん(2025-07-04 14:22:40)の記事
> 余談その2
>
> 私も CSV の C はカンマだろ-、と思っていましたが、以下 Wikipedia より抜粋。
> ----
> 類似したフォーマットとして、タブで区切られた tab-separated values (TSV) や、欧文間隔 (いわゆる半角スペース) で区切られた space-separated values (SSV) などがあり、これらをまとめて character-separated values (CSV)[1] や delimiter-separated values (DSV) などと呼ぶことも多い。
>
> 実際に、カンマ以外の文字で区切ったデータを「CSVファイル」として保存するソフトウェアもある。例えばフランス・ドイツ・イタリアなどのヨーロッパ諸国では、区切り文字にカンマではなくセミコロン(;)を使う慣習がある。これは小数点記号にピリオドではなくカンマを用いる文化であることも関与している。
igeruさんご情報を頂きありがとうございました。
皆様のおかげで今回の問題が無事解決致しました。
本当にありがとうございました。
■[返信 5] higeruさん(2025-07-04 14:22:40)の記事
> 余談その2
>
> 私も CSV の C はカンマだろ-、と思っていましたが、以下 Wikipedia より抜粋。
> ----
> 類似したフォーマットとして、タブで区切られた tab-separated values (TSV) や、欧文間隔 (いわゆる半角スペース) で区切られた space-separated values (SSV) などがあり、これらをまとめて character-separated values (CSV)[1] や delimiter-separated values (DSV) などと呼ぶことも多い。
>
> 実際に、カンマ以外の文字で区切ったデータを「CSVファイル」として保存するソフトウェアもある。例えばフランス・ドイツ・イタリアなどのヨーロッパ諸国では、区切り文字にカンマではなくセミコロン(;)を使う慣習がある。これは小数点記号にピリオドではなくカンマを用いる文化であることも関与している。
igeruさんご情報を頂きありがとうございました。
皆様のおかげで今回の問題が無事解決致しました。
本当にありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-08-27 00:26:19 )