• 締切済み

CSV形式での保存時に”文字列引用符”にしたい(エクセル)

データのアップデートに、CSV形式でのファイルから一括アップロードができるのですが、データ内容に条件があり、文字列についてはダブルコーテーションで括ることになっています。 ”千代田区日本橋”,”1丁目1-1”, といった感じなのですが、エクセルから保存する時に一括で「”」が入る方法はあるでしょうか? 普通にCSVで保存すると、入りません。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 >プログラムありがとうございました。ただ使う人間が理解できないので、使えませんでした。ごめんなさい。 CSVの「" "」で囲うマクロって、ある種定番ですから、どなたか分る方に組んでもらってください。#4さんには失礼かもしれませんが、Excel内で出来るものを、わざわざ外部ツールまで使う必要性はないと思います。そうしないと、いつまで経っても、Excelは不便さが残ってしまいます。 それから、お仕事で、VBA禁止の場合のご質問は、最初から、その旨を書いてくださいね。分らないから聞いていらっしゃるのでしょうから、手順まで書いてありながら、「理解できないから、使えません」なんて言うのは、とてもおかしな対応だと思います。

tatomi
質問者

お礼

マクロはオート登録以外使った事が無く、VBAを使ったプログラムは、やったこともありません。質問した時には、エクセルのどこかに機能があるのではないか、との期待から質問させていただきました。エクセルには無いことがわかりましたので、エディターの一括変換で現在は対応しています。 >手順まで書いてありながら との事ですが、どこのボタンを押していけば、VBA入力になるのかまったくわかりません。貴方様のようなある程度の知識を持っていない私にとって、恥ずかしいことでもあり、大変失礼とは思ったのですが、正直に理解できないと申しあげたわけです。それ以上の他意はございませんので、お許しください。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

下記だと、プログラムが簡単に済みます。やってみてください。 DOS-Basic時代からある、Input,Writeステートメントの特徴を最大限使ってます。 Sub test01() Open "Book1.csv" For Input As #1 Open "Book2.csv" For Output As #2 While Not EOF(1) Input #1, s1, s2 Write #2, s1, s2 Wend Close #1 Close #2 End Sub ーーーーー 修正必要個所 (1)インプットファイル名のBook1,アウトプットファイル名Book2のところを質問者に合わせて変えてください。 (2)1レコード(メモ帳で1行)の項目数により Input #1, s1, s2 Write #2, s1, s2 のS1,S2,・・を増やしてください。上記は2項目の例です。 実際テスト例示 (実行前のインプットファイル)メモ帳で 12,a 34,sd 23,f 45,ghj (実行後) アウトプットファイル(メモ帳で確認) 12,"a" 34,"sd" 23,"f" 45,"ghj"

tatomi
質問者

お礼

プログラムありがとうございました。ただ使う人間が理解できないので、使えませんでした。ごめんなさい。

noname#223623
noname#223623
回答No.4

Excel側で処理するのは他の方にお任せして、CSVファイルを加工する方法を紹介します。 御希望のことは「テキスト(CSV)ファイル変換」というソフトでできると思います。ちょっと前にCSVを扱うツールをいろいろ試してみたのですが、指定した列だけに引用符を付加できるのは、私が探した限りではこれだけでした。ただし、レコードごとに列数が違うとうまくいかないので、空白セルにはダミーを入れておく必要があります。引用符をつけた後はテキストエディタで一括削除してしまえばいいでしょう(ちょっと面倒ですけどね)。 とにかく、全部の列に引用符を付けるのなら「IKARI」というツールでもできました。他にも何種類かあるかもしれません。 私の場合ですが、ファイルが大きかったのでGUIのツールはどれも使えませんでした(古いマシンだったので固まってしまった)。結局、AWKで簡単なスクリプトを書いて処理しました。うまくいかない場合は、このようなスクリプト言語を使うのも手だと思います。

参考URL:
http://www.koka-soft.com/okada/koka_software/chgfld.htm
tatomi
質問者

お礼

おもしろいソフトのご紹介ありがとうございました。指定した列だけにつくので、使えそうです。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 簡単なコードですみませんが、こんなもので出来るはずです。現在のコードでは、すべて、文字列として、「" "」クォーテーションで括ってしまいます。数字との区別はありません。 一応、標準モジュールに登録してください。 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 後は、Alt + F8 で、CSVEport_W_Qt を実行してみてください。(プロシージャーの名前は任意ですから、和名を付け直しても結構です。) '-------------------------------------------- Option Explicit Sub CSVExport_W_Qt()   Dim Fname As String   Dim usedRng As Range   Dim i As Long, j As Long   Dim buf As String   Dim Fno As Integer   Const Qt As String = """"   Fname = Application.InputBox("出力名を入力してください。", Type:=2)   If VarType(Fname) = vbBoolean Or Fname = "" Then Exit Sub   If InStr(Fname, ".csv") = 0 Then Fname = Fname & ".csv"   Fno = FreeFile()   Open Fname For Output As #Fno   With ActiveSheet    Set usedRng = .UsedRange    On Error Resume Next    For i = 1 To usedRng.Rows.Count      For j = 1 To usedRng.Columns.Count       If Not IsEmpty(usedRng.Cells(i, j)) Then         buf = buf & "," & Qt & usedRng.Cells(i, j).Value & Qt         Else         buf = buf & ","       End If      Next j      Print #Fno, Mid$(buf, 2)      buf = ""    Next i    On Error GoTo 0   End With   Close #Fno   Beep End Sub '--------------------------------------------

tatomi
質問者

お礼

プログラムありがとうございました。ただ使う人間が理解できないので、使えませんでした。ごめんなさい。

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.2

エクセルで保存する時CSVを選択すると、CSV形式(Comma Separated Value) になっています。 メモ帳かワードパットを開けて確認してみてください。 ホストに送信する時、よく行ってました。

回答No.1

残念ながら、Excel自体には" "囲いでCSV出力する機能はないと 思います。 ただ、筆丸などのテキストエディタ あるいは Wordを使えば、 簡単に置き換えできますので、それでおやりになったらいかが ですか。 例えば、Wordであれば、  ・先頭に「"」を挿入  ・「,」を「","」に置き換え  ・改行記号を「"改行記号"」に置き換え  ・最後の「"」を削除 といった感じで、相当巨大なCSVファイルであっても、ほんの数十秒 もあれば完了します。 ただ、元々のデータ中に「4,000円」というようにカンマ区切り のデータが存在している場合はちょっとやっかいですね。

tatomi
質問者

お礼

機能が無いとのご連絡ありがとうございました。1番良いのがEXCELに機能があることなのですが、大変残念です。

関連するQ&A

  • ExcelのCSV形式について

    ExcelデータをCSV形式で保存するとき文字列はダブルコーテーション、数字列はそのままでカンマ区切りしたいです。確か123のCSV形式はそうなってたと思います。お手数ですが御回答、宜しくお願い致します。

  • EXCEL VBAでのCSVファイルの編集

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

  • EXCEL→CSV保存時のダブルクォーテーションについて

    下記のようにEXCELマクロにてEXCELファイルをCSVファイルに保存しようとしています。 NewBook.SaveAs Filename:="test.csv", FileFormat:=xlCSV, CreateBackup:=False このとき、セル値にダブルクォーテーションが含まれていると、出力CSVファイルの値がダブルクォーテーションで囲まれてしまいます。 ●ダブルクォーテーションが含まれていない場合 セル値→A列:ABC     B列:DEF CSVファイル→ABC,DEF ●ダブルクォーテーションが含まれている場合 セル値→A列:A"C     B列:DEF CSVファイル→"A"C",DEF 後者の場合もダブルクォーテーションで囲まれないようにするにはどうすればよいでしょうか。

  • csv形式について

    Access2000を使用しています。 データをCSV形式で吐き出したいのですが、その際、フィールドにデータが存在すれば、ダブルクォーテーションをつけ、空欄だった場合はダブルクォーテーションをつけないようにしたいと思っています。 実際にやってみると、空欄のフィールドに対してダブルクォーテーションがつくものと、つかないものとがあります。この違いはどこからきているのでしょうか? ご存知でしたら教えてください。よろしくお願いします。

  • EXCEL csv形式 1-2-3のデータが勝手に2001/2/3になる

    csv形式で保存しているデータをエクセルで読み込むと、 1-2-3→2001/2/3 になってしまいます。 WEB処理でダウンロードさせて、WINDOWSの関連つけで自動的に開かせているのです。 全角「1-2-3」と入力しても同じでした。 ダブルコーテーションでくくってもだめ。 あきらめるしかありませんか? マクロを使うつもりはありません。 データに余計なものを付加するのもだめです。 EXCELの機能を調整するのはありです。 よろしくお願いします。

  • CSVファイルへの文字列データの書き出しについて

    OS:WindowsXP、Excel:2003 です。 Excelマクロ(VBA)で、あるデータをCSVファイルに出力しているのですが、 文字列型(String)を書き出すと、必ずダブルクォーテーションで囲まれます。 CSVへ書き出すときは、そういう仕様になっているということは分かったのですが、 処理の都合上、どうしてもダブルクォーテーションで囲まずに書き出ししたいと思っています。 そういう場合にはどのようにすれば良いのか教えて下さい。 ちなみに、書き出しは「Write」を使っています。

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • ExcelのCSV形式で保存する必要性について

    テキストデータをExcelでカンマ区切りで開いてExcelのCSV形式で保存すると、見た目はエクセルとなんらかわらず、集計等できるものの、書式等が保持されない状態で保存されるものと理解しています。 それであれば、なにもCSVでなくExcelブック形式で保存した方が良いように思いますが、敢えてExcelのCSV形式で保存する理由、あるいは必要性について教えてください。

  • EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。

    Excel VBAにて質問があります。 E列に「01」と表示させたくで 'E列を「文字列」にする Columns("E:E").Select Selection.NumberFormatLocal = "@" と記述しました。 その後、名前を付けて保存でCSV形式にて保存します。 保存されたCSV形式のファイルを開くと「1」のままになってしまいます。 なぜでしょうか?何か他に記述しなければいけないのでしょうか? わかる方教えてください。

  • エクセルでCSV形式で保存したいができない

    エクセル2002で、保存するときに csv形式と選ぶのですが CSVとは互換性のない機能が含まれている というようなメッセージがでてしまいます 中のデータは単なる住所録で特段凄い内容ではありません。どうすればうまく行きますか?

専門家に質問してみよう