
No.2ベストアンサー
- 回答日時:
「標準モジュール」に貼り付けることを想定して作りました。
ActiveSheet の UsedRange を取るように作られています。
「超便利CSVコンバーター 」のHPで、私のと仕上がりを比較してみましたが、こちらの試験では、同じように仕上がります。私のコードの中で、多少、気がかりな部分もありますが、これだけしたら、何も難しいことはしていませんので、内容的には簡単な部類だと思います。
Sub CsvOutWithQuatation()
Dim objFs As Object
Dim objText As Object
Dim Rng As Range
Dim DataRow As Long
Dim DataCol As Integer
Dim i As Long, j As Long
Dim buf As String
Dim myCsv As String
Const QT As String = """" 'クォーテーション
Const sep As String = "," 'コンマ切り
Const Ext As String = ".csv" '拡張子
Dim myPath As String
Set objFs = CreateObject("Scripting.FileSystemObject")
Set Rng = ActiveSheet.UsedRange
DataRow = Rng.Rows.Count
DataCol = Rng.Columns.Count
myPath = ThisWorkbook.Path & "\" 'マクロのブックのパスと同じ場所
If Application.CountA(Rng) <= 1 Then
MsgBox "データが1つか、空です", 16
Exit Sub
End If
Do
myCsv = Application.InputBox("ファイル名を入れてください", Type:=2)
If myCsv = "False" Or myCsv = "" Then
Exit Sub
Else
If InStr(myCsv, Ext) = 0 Then
myCsv = myCsv & Ext
End If
End If
If Dir(myPath & myCsv) <> "" Then
MsgBox "同名のファイルが既にあります", 16
End If
Loop Until Dir(myPath & myCsv) = ""
Set objText = objFs.CreateTextFile(myPath & myCsv)
For i = 1 To DataRow
If VarType(Rng.Cells(i, 1)) = vbString Then
buf = QT & Rng.Cells(i, 1).Value & QT
Else
buf = Rng.Cells(i, 1).Value
End If
For j = 2 To DataCol
If VarType(Rng.Cells(i, j)) = vbString Then
buf = buf & sep & QT & Rng.Cells(i, 1).Value & QT
Else
buf = buf & sep & Rng.Cells(i, j).Value
End If
Next j
objText.WriteLine (buf)
Next i
Set Rng = Nothing
Set objText = Nothing
Set objFs = Nothing
Beep '終了したら、音がなります。
End Sub
No.1
- 回答日時:
Windowsのcsv形式はダブルコーテーションに対応してないので保存時の設定で行うのはできないと思います。
シェアウェアですが下記のようなソフトがありますが...
超便利CSVコンバーター
http://www.vector.co.jp/soft/win95/business/se23 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでhtml形式のテキストを表...
-
Wordの文章をExcelに内容ごとに...
-
ダブルクォーテーション囲いカ...
-
【AccessVBA】ダイアログで複数...
-
【Access】クエリで抽出...
-
CSVファイルをEXCELに...
-
Excelのデータ(数字)をテキス...
-
多数のeml形式ファイルを1つの...
-
列数が4000を超えるcsvファイル...
-
ISOファイルとMDSファイル
-
差し込み印刷の元データファイ...
-
Excel 2003 のエラーメッセージ
-
fgets関数のEOFの扱い方について
-
[Googleスプレッドシート]エク...
-
【マクロ】変数に入れるコード...
-
access テキストボックスの値取得
-
EXCEL共有ファイルの使用中の相...
-
共有フォルダの最終アクセス者...
-
差し込み印刷で文字が”0”と出て...
-
ccdファイルはどのようにして使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordの文章をExcelに内容ごとに...
-
【Access】クエリで抽出...
-
SQLSever 一括インポートについて
-
Excelのデータ(数字)をテキス...
-
多数のeml形式ファイルを1つの...
-
複数eml形式のBecky!への一括イ...
-
アクセス2007でのインポートエ...
-
notepad++ で作成した文書を cs...
-
Excelでhtml形式のテキストを表...
-
複数のメールファイルを1つの...
-
【AccessVBA】ダイアログで複数...
-
特定行の選択、抽出
-
列数が4000を超えるcsvファイル...
-
エクセル2000で65536行を超える...
-
アクセスで小数点以下1桁まで...
-
ACCESS複数テキストファイルを...
-
xls→csv→txtで住所が数値で読み...
-
数値を文字列として読み込ませ...
-
ダブルクォーテーション囲いカ...
-
アクセス(ACCESS) インポート...
おすすめ情報