
添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。
下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。
Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim 行数 As Long, 列数 As Integer
Dim i As Integer, j As Long, k As Long
ファイル名 = "test.csv"
フォルダ名 = "csv"
パス名 = ActiveWorkbook.Path & "\" & _
フォルダ名
'csvフォルダが存在しなければ作成する
If Dir(パス名, vbDirectory) = "" Then
MkDir パス名
End If
ChDir パス名
Open ファイル名 For Output As #1
For i = 1 To Worksheets.Count
Worksheets(i).Activate
Worksheets(i).Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
行数 = Selection.Rows.Count
列数 = Selection.Columns.Count
For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k) _
.Value
Write #1, データ;
Next k
Write #1, Selection.Cells(j, 列数) _
.Value
Next j
Next i
Close #1
End Sub

No.2ベストアンサー
- 回答日時:
Write # は文字列を""で囲んで出力する仕様になっています。
そのまま出力したければ、Print #を利用すればよろしいかと。
ただし、Printの場合は区切り文字(カンマ)を自動で出力してくれませんので、併せて出力する必要があります。
For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k) .Value
Print #1, データ; ",";
Next k
Print #1, Selection.Cells(j, 列数).Value
Next j
なお、いらぬおせっかいですが、ドライブが複数ある環境下だと、
ChDir パス名
だけでは必ずしもcvsフォルダ内に、ファイルが作成されるとは限りません。
Open パス名 & "\" & ファイル名 For Output As #1
のように、フルパスで指定しておいた方が確実かと…
ご回答ありがとうございます。
Printとカンマを手動で出力することで、
期待動作をさせることが出来ました。
>必ずしもcvsフォルダ内に、ファイルが作成されるとは限りません。
そうなのですね。。全く考慮していませんでした。
是非反映させたいと思います。
No.1
- 回答日時:
For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k).Value
' Write #1, データ;
Print #1, データ;
Next k
' Write #1, Selection.Cells(j, 列数).Value
Print #1, Selection.Cells(j, 列数).Value
Next j
といった具合に 『Write』を『Print』変更してみましょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロから出力されるcsvのダブルコーテーションをなくしたい。
Visual Basic(VBA)
-
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
-
4
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
5
Excelの保存で "を付けないように保存できる?"
Excel(エクセル)
-
6
各項目がダブルクォーテーションで囲まれたカンマ区切りのCSVを作る方法?
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
9
タブ区切りデータからダブルコーテーションを外したい
Excel(エクセル)
-
10
EXCEL→CSV保存時のダブルクォーテーションについて
Visual Basic(VBA)
-
11
CSVファイルからダブルクォーテーションを削除したい。VBS使用で。
Word(ワード)
-
12
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
13
エクセルでCSVファイルとして保存時 マークの増加を防ぐ方法を教えてください"
Excel(エクセル)
-
14
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
15
ダブルコーテーション付きでCSV出力
Visual Basic(VBA)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
18
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
19
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
20
Access 1レコードずつcsvで出力したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
【VB.NET】App.configにファイ...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
実行ファイルのパスを取得したい
-
fopenでのパス指定
-
コマンドプロンプトのコピー関...
-
初心者powershellのPS1ファイル...
-
C#でのProcess.Startと変数path
-
Excel2010VBAでエラーが出る相...
-
VBAでパワーシェルを実行したい...
-
エクセルのファイルオープン時...
-
visual studio 2010のワーニング
-
開いているファイルを削除し、...
-
A列に記載されているフォルダ...
-
Visual Studio 2013
-
VBA★PDFをPDFアプリで印刷し...
-
VB.NETで参照設定
-
TerapadからFirefoxを開きたい
-
VB2005 でパス名が誤っていない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
ExcelのVBAで上書き保存を確...
-
コマンドプロンプトのコピー関...
-
VBAでパワーシェルを実行したい...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
VBAでの共有パスにつきまして
-
VBA★PDFをPDFアプリで印刷し...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
EXCEL(VBA)で指定フォルダ内の...
-
A列に記載されているフォルダ...
-
VBAで、VBのapp.pathと同じ機能...
おすすめ情報