プロが教えるわが家の防犯対策術!

データのアップデートに、CSV形式でのファイルから一括アップロードができるのですが、データ内容に条件があり、文字列についてはダブルコーテーションで括ることになっています。

”千代田区日本橋”,”1丁目1-1”,

といった感じなのですが、エクセルから保存する時に一括で「”」が入る方法はあるでしょうか?
普通にCSVで保存すると、入りません。

A 回答 (6件)

こんにちは。



簡単なコードですみませんが、こんなもので出来るはずです。現在のコードでは、すべて、文字列として、「" "」クォーテーションで括ってしまいます。数字との区別はありません。

一応、標準モジュールに登録してください。

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
'--------------------------------------------
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/09/27 11:19

こんばんは。



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

CSVの「" "」で囲うマクロって、ある種定番ですから、どなたか分る方に組んでもらってください。#4さんには失礼かもしれませんが、Excel内で出来るものを、わざわざ外部ツールまで使う必要性はないと思います。そうしないと、いつまで経っても、Excelは不便さが残ってしまいます。

それから、お仕事で、VBA禁止の場合のご質問は、最初から、その旨を書いてくださいね。分らないから聞いていらっしゃるのでしょうから、手順まで書いてありながら、「理解できないから、使えません」なんて言うのは、とてもおかしな対応だと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/01 23:44

下記だと、プログラムが簡単に済みます。

やってみてください。
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"
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/27 11:15

Excel側で処理するのは他の方にお任せして、CSVファイルを加工する方法を紹介します。



御希望のことは「テキスト(CSV)ファイル変換」というソフトでできると思います。ちょっと前にCSVを扱うツールをいろいろ試してみたのですが、指定した列だけに引用符を付加できるのは、私が探した限りではこれだけでした。ただし、レコードごとに列数が違うとうまくいかないので、空白セルにはダミーを入れておく必要があります。引用符をつけた後はテキストエディタで一括削除してしまえばいいでしょう(ちょっと面倒ですけどね)。

とにかく、全部の列に引用符を付けるのなら「IKARI」というツールでもできました。他にも何種類かあるかもしれません。

私の場合ですが、ファイルが大きかったのでGUIのツールはどれも使えませんでした(古いマシンだったので固まってしまった)。結局、AWKで簡単なスクリプトを書いて処理しました。うまくいかない場合は、このようなスクリプト言語を使うのも手だと思います。

参考URL:http://www.koka-soft.com/okada/koka_software/chg …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/27 11:18

エクセルで保存する時CSVを選択すると、CSV形式(Comma Separated Value)


になっています。
メモ帳かワードパットを開けて確認してみてください。
ホストに送信する時、よく行ってました。
    • good
    • 0

残念ながら、Excel自体には" "囲いでCSV出力する機能はないと


思います。

ただ、筆丸などのテキストエディタ あるいは Wordを使えば、
簡単に置き換えできますので、それでおやりになったらいかが
ですか。

例えば、Wordであれば、
 ・先頭に「"」を挿入
 ・「,」を「","」に置き換え
 ・改行記号を「"改行記号"」に置き換え
 ・最後の「"」を削除
といった感じで、相当巨大なCSVファイルであっても、ほんの数十秒
もあれば完了します。

ただ、元々のデータ中に「4,000円」というようにカンマ区切り
のデータが存在している場合はちょっとやっかいですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/27 11:20

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

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


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