No.2ベストアンサー
- 回答日時:
Excelの機能では、『,』で区切ったcsvファイルしかできません。
質問にあるように、『"』で囲ったcsvファイルを作れるようにしてみました。
ただし、長くなるので、Excelの機能で『,』で区切っただけのcsvファイルを『"』で囲むように書き換えるようにしてみました。
全てをExcelVBAで書けましたが、使用環境、Bookの構造、Bookの重要度など不明なので、一旦作ったcsvファイルを書き換えるようにしています。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。(新規Bookでかまいません)
操作手順は、シートに戻り、
1.ツール→マクロ→マクロ でCSVchangeを実行。
2.元のcsvファイルを選択する。
3.元のcsvファイルがあったフォルダに、"chg"+元のcsvファイル名 の新ファイルが作成されます。
ご参考に。
Sub CSVchange()
Dim csvFL1 As Variant '元のCSVファイル
Dim csvFL2 As String 'ダブルクオテーションで囲んだCSVファイル
Dim rec As String 'CSVファイルの1行
Dim FLNo1 As Integer 'ファイル番号
Dim FLNo2 As Integer 'ファイル番号
Dim dq As String 'ダブルクオテーション
dq = Chr(&H22)
'元のcsvファイルを選択する
Dim myTitle As String 'タイトル
Dim myFilter As String '保存ファイル名
myTitle = "変換するcvsファイル名を指定します"
myFilter = "csvFile(*.csv),*.csv"
csvFL1 = Application.GetSaveAsFilename(FileFilter:=myFilter, Title:=myTitle)
If csvFL1 = False Then Exit Sub
'書き換えるcsvファイル名を自動で決める。(chg + 元のファイル名にする)
Dim pot As Integer
Dim L As Integer
For L = Len(csvFL1) To 1 Step -1
If Mid(csvFL1, L, 1) = "\" Then
pot = L: Exit For
End If
Next
csvFL2 = Left(csvFL1, pot) & "chg" & Right(csvFL1, Len(csvFL1) - pot)
'ファイルを開く
FLNo1 = FreeFile: Open csvFL1 For Input As #FLNo1
FLNo2 = FreeFile: Open csvFL2 For Output As #FLNo2
'書き換える
While Not EOF(FLNo1)
Line Input #FLNo1, rec
Print #FLNo2, dq & Application.Substitute(rec, ",", dq & "," & dq) & dq
Wend
Close
MsgBox "終了しました"
End Sub
No.1
- 回答日時:
私も必要だったのですが、調べてもできなかったのです。
しようが無いので、VBAで作成しました。よろしければ使ってください。VBAは全くの独学ですので、お見苦しい点もあるかと思います。一応A列からG列を対象としています。7行目のForの制御変数の開始と終了を変えれば良いです。例えば、C列からI列が対象の場合はj=3 To 9とすればよいです。また、出力ファイル名は2行目のコーテーションマークの中を変更すれば、変えられます。
詳しい説明が必要ならば、補足してください。ある程度VBAの分かる方なら、容易に理解できると思います。
Sub write_csv_with_quote()
Open "c:\csvfile.csv" For Output As #1
'
i = 1
Do While Cells(i, 1) <> ""
csv_text = ""
For j = 1 To 7
If j > 1 Then
csv_text = csv_text & ","
End If
csv_item = Chr(34) & Cells(i, j) & Chr(34)
csv_text = csv_text & csv_item
Next
Print #1, csv_text
i = i + 1
Loop
'
Close #1
End Sub
この回答へのお礼
お礼日時:2002/06/28 12:09
早速に有難うございます、実は郵政省のハイブリッドメールを利用したいと思い、CSVに書き出したのですが、これをExcelで読むと、地番項目例えば1-2-3がの日付形式やシリアル形式になってしますので、研究中です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) Excelの帳票形式をアクセスに取り込むため、 csvのデータ形式になるように、マクロを作成している 2 2022/06/12 22:52
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAについて とある...
-
アクセスと同フォルダのCSVファ...
-
Python CSVファイルについて
-
バッチ処理でcsvファイルの文字...
-
エクセル 指定範囲をCSV出力
-
【Rコマンダー】データインポー...
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
バッチでテキストファイルから...
-
アクセス 壊れた? 「ファイ...
-
Excel VBA ステップインが途中...
-
コマンドプロンプト標準出力と...
-
Thunderbirdで社内共有フォルダ...
-
Latexで図番号だけを「図1.1」...
-
コマンドプロンプトでファイル...
-
多数のサブディレクトリ内のフ...
-
make test って何をするための...
-
バッチ処理でファイルの中身を...
-
[teraterm] waitコマンドで停止...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
アクセスと同フォルダのCSVファ...
-
csvファイルをlinuxコマンドで...
-
MAC フォルダ内のPDF件数とペー...
-
エクセル 指定範囲をCSV出力
-
FTPコマンド mgetでとまってし...
-
複数のcsvファイルを統合、でも...
-
【Rコマンダー】データインポー...
-
複数エクセルファイルの合成
-
バッチ処理でcsvファイルの文字...
-
csv形式からbmpを作成
-
csvをVBAを使ってエクセル形式...
-
gnuplotで複数csvファイルから...
-
エクセルマクロ、複数のCSVファ...
-
マクロ 上位モジュールの作成
-
エクセルにまとめたcsvデータを...
-
複数のCSVファイルを読み込んで...
-
Excelの帳票形式をアクセスに取...
-
csvファイルを結合するバッ...
おすすめ情報