CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。
ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。
困っています。どなたかお助け下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Excelの機能にはないと思うので書いてみました。


質問の意図がCSV1かCSV3か不明のためCSV3を出力するようにしています。
『*****』の行をコメント行にするとCSV1で出力します。出力したい矩形範囲を選択して実行します。
ご参考に。

'今はCSV3、*****をコメント行にするとCSV1
Sub csv1or3Write()
  Dim rw, rowStr, rowEnd As Long '行カウンタ
  Dim col, colStr, colEnd As Integer '列カウンタ

  With Selection '出力する選択範囲
    rowStr = .Cells(1, 1).Row '開始行
    rowEnd = .Cells(.Rows.Count, 1).Row '最終行
    colStr = .Cells(1, 1).Column '開始列
    colEnd = .Cells(1, .Columns.Count).Column '最終列
  End With

  Open "C:\--------\----\csvTest3.csv" For Output As #1 '出力ファイル名をセットする!!
  For rw = rowStr To rowEnd
    For col = colStr To colEnd - 1
      If IsNumeric(Cells(rw, col)) Then '*****
        Print #1, Cells(rw, col) & ","; '*****
      Else '*****
        Print #1, Chr(34) & Cells(rw, col) & Chr(34) & ",";
      End If '*****
    Next
    If IsNumeric(Cells(rw, col)) Then '*****
      Print #1, Cells(rw, col) '*****
    Else '*****
      Print #1, Chr(34) & Cells(rw, col) & Chr(34)
    End If '*****
  Next
  Close
End Sub
    • good
    • 0
この回答へのお礼

有り難うございました。
お教え頂いた命令は私もインターネット上で調べてはいました。
実は、この件をお願いしたデータは、縦3万行、横40列という膨大なデータになっている為、お教え頂いた命令で記述した場合、編集作業に膨大な時間がかかってしまいます。
何がしたいかというと、EXCEL VBAでODBC経由でデータ検索(sqlのSELECT文)したいのですが、このダブルコォーテーションがなければ、データとして検索できないのです。
この様なデータを条件検索できるような命令がほかにあればご指導下さい。

お礼日時:2001/09/07 08:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

Qカンマ区切りの数字をCSVファイルにインポートする時どうすれば?

カンマ区切りで区切られた金額を
CSVファイルにエクスポートなどする時は、
どうやって、カンマの区切りを判別するのですか?

Aベストアンサー

(1)アプリがかいてないのですが、エクセルとすると、エクセルの桁どりのカンマは書式設定の働きでもって、見た目にカンマが入っているが、数式バーではカンマがありませんので判るとおり、データにはカンマはありません。
ですからエクセルからエクスポートしても、数値項目にはCSVファイルには、桁取りカンマがありません。
(2)逆に
"1,001",023,34
'01,"122,234",34
1,234,"334,455"
をメモ帳で作って、エクセルに読み込ますと
"1,001",023,34
'01,"122,234",34
1,234,"334,455"
となるが、例えば334,455のセルには値はカンマが省かれています。
(3)だいたい、数値を表示するソフトは、値はカンマなしで保持し、画面や印刷するときに、カンマを入れるものです。
(4)(2)において3桁ごとのカンマを入れるだけにすると、項目区切りのカンマと区別がつかなくなりますが、
それでそのために前後をダブルクオーテーションでくくる
約束です。
(5)むしろCSVファイルの基本は、1項目の前後をダブルクオーテーションで括るのが原則なのですが、数値の場合省略できると言う約束になっている形式が多いです。しかし3桁ごとのカンマを入れるとすると、原則に戻らざるを得ません。

(1)アプリがかいてないのですが、エクセルとすると、エクセルの桁どりのカンマは書式設定の働きでもって、見た目にカンマが入っているが、数式バーではカンマがありませんので判るとおり、データにはカンマはありません。
ですからエクセルからエクスポートしても、数値項目にはCSVファイルには、桁取りカンマがありません。
(2)逆に
"1,001",023,34
'01,"122,234",34
1,234,"334,455"
をメモ帳で作って、エクセルに読み込ますと
"1,001",023,34
'01,"122,234",34
1,234,"334,455"
となるが、例え...続きを読む

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

QExcelに、ダブルクォーテーションで始まる文字列を貼り付けると、ダブルクォーテーションが消えること

Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに
ダブルクォーテーションが消えるのですが、
Excelってもともと(標凖的な動作として)そういうものですか。

(F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、
私はセルを選択して貼り付けただけでも大丈夫だと思っていました。

「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。

「ダブルクォーテーションで始まる文字列」と言っても、
ダブルクォーテーションが3つ以上あったときに消えるのは、最初の1組(2つ)ですね。
しかし、
"AAAA"""BBBB
のような場合には、なぜか
AAAA"BBBB
になるのです。
(ちなみに、この文字列を、質問直前の質問内容確認の画面(IE)でコピーしてExcelに貼り付けたときは、違います。)
どのような規則に基づいてダブルクォーテーションが消えるのかも疑問です。

このような仕様になっている理由はなんでしょうか。


また、Excelに文字列を貼り付けるという操作を頻繁に行うため、
できれば、編集状態にしなくても、
セルを選択して貼り付けするだけで、そのままダブルクォーテーションも貼り付いてほしいのですが、
そのためにはどうすればよいのでしょうか。

「セルの書式設定」で、表示形式を文字列にすればよいと思ったのですが、だめでした。

セルには文字列を入れるだけで、数式を入れたりしません。
(数式としては扱ってほしくない、という意味です。)


Excelは2000です。

Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに
ダブルクォーテーションが消えるのですが、
Excelってもともと(標凖的な動作として)そういうものですか。

(F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、
私はセルを選択して貼り付けただけでも大丈夫だと思っていました。

「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。

「ダブル...続きを読む

Aベストアンサー

N0.2です。

どうせ置換するのなら、
テキストエディタで "→@ しておいて、Excel貼付後 @→" に戻す
という方法はどうでしょうか。

例)最初に "AAAA"""BBBBB → @AAAA@@@BBBBB
  Excel貼付後に @AAAA@@@BBBBB → "AAAA"""BBBBB

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QCSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。

CSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。
例えば
 abc,def,ghi,jkl
 mno,pqr,stu,vwx
    ↓
 abc,"def",ghi,"jkl"
 mno,"pqr",stu,"vwx"

というように、2番目と4番目の列の文字列をダブルクォーテーションで囲む、といった具合にです。
調べてみるとVBAを使用する方法はあるようですが、EXCELやその他のフリーソフト等を使用して処理する方法はありませんでしょうか。

よろしくお願いいたします。

Aベストアンサー

原始的ですが、、

1.csvファイルとしてExcelで開く。
  拡張子がcsvであれば自動的に判別してくれます。
2.囲みたい列の前後に列を挿入する。
  質問者さんの例の場合、B,D,FとH以降が空白になる。
3.囲みたい列の前の列の全行に「あ」と入れる。
  囲みたい列の前の列の全行に「い」と入れる。
  (※ファイル内で使われていない文字を入れる。漢字でも記号でもいい。)
4.いったん、上書き保存し
  CSVのままでいいか聞かれるので「はい」を選ぶ。
5.Excelを閉じる。
  保存するか聞かれるが、保存しない。
6.更新されたcsvファイルをテキストエディタ(メモ帳等)で開く。
7.置換で「あ,」→「"」に、「,い」→「"」に置換する。

というので、どうでしょう。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QエクセルのCSV(カンマ区切り)保存について教えてください

次のようなEXCELデータをCSV(カンマ区切り)で保存した際に項目(カンマ)を2つ追加できるでしょうか?

EXCEL
 セルA1:AAA
 セルB1:BBB
 セルC1:
 セルD1:CCC
 セルE1:
 セルF1:

このデータをCSV保存してTEXTで確認すると、
 AAA,BBB,,CCC

となりますが、これを
 AAA,BBB,,CCC,,

としたいのですが、セルE1とセルF1がNULLのためカンマ区切りができません。半角スペースなどをいれるしかないのでしょうか?

できればセルE1とセルF1には何も入力したくないのですが。良い方法がありましたら教えてください。

Aベストアンサー

こんばんは

F列まで罫線で表組もしくは適当な書式設定(表示形式など)をしてからCSV保存してみて下さい

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

Qダブルクォーテーションカンマ区切りのcsv形式ファイルへの変換方法

Excelファイルをダブルクォーテーションカンマ区切りのcsv形式ファイルへ変換する方法を教えてください。

"●●","○"○,"◆◆"

Aベストアンサー

他に、VBAでファイル出力する方法もあります。
「"」は Chr(34) で付加します。
頻度が少なければ、#2が良いと思います。
では!


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング