ExcelからCSV保存したファィルにダブルクォーテーション(“)を付ける【Office365・Excel2016】

vbsファイル 使用方法

Excelからcsvファイル形式で保存すると
カンマ区切りになりますが値がダブルクォーテーション(“)で囲まれていません。
ダブルクォーテーション(“)で囲われていないcsvファイルは
各ソフトにデータをインポートした際正しく取り込まれなかったり不具合が生じるケースがあります。

ダブルクォーテーションを付与してくれるvbsファイルを作っておけば
csvファイルをドロップするだけでダブルクォーテーション付きのcsvファイルが保存されます。

vbsはWindowsなら標準で使えてテキストとしてメモ帳で編集して拡張子をvbsに変更するだけでも使えます。

csvファイルをドロップすると
excel_006
csvファイルが保存されている場所に
ファイル名+「_ダブルクォーテーション付.csv」というファイルが保存されます。
excel_007

vbsファイル ダウンロード

※ブラウザやウイルスソフトによってはvbsファイルを
 害を及ぼすファイルと認識してダウンロード出来ない場合があります。
 そのような場合は下のコードをテキストとして保存し
 「.txt」を「.vbs」に変更して使用して下さい。
※テキストの文字コードはANSIで保存して下さい。
※ドロップするcsvファイルの文字コードもANSIで保存して下さい。

Set objCsv = WScript.Arguments
Set objFileSys = WScript.CreateObject(“Scripting.FileSystemObject”)
Set objTxt = objFileSys.OpenTextFile(objCsv(0),1)
Set objFolder = objFileSys.OpenTextFile(objFileSys.GetParentFolderName(objCsv(0)) & “\” & objFileSys.GetBaseName(objCsv(0)) & “_ダブルクォーテーション付.csv”,2,True)

Do Until objTxt.AtEndOfStream
csvIn = objTxt.ReadLine
objFolder.WriteLine “””” & Replace(csvIn,”,”,”””,”””,1,-1,1) & “”””
Loop


◆スポンサードリンク – 楽天市場

コメント

  1. 初心者だけど頑張りたい より:

    非常に魅力的なVBAの公開ありがとうございます。
    試してみたところ、一部が文字化けしてしまうようでした。
    エクセル保存したCSVをダブルクォーテーションへ文字化けなしで保存したいのですが
    他に方法はありますでしょうか。

    • 川端ちよ ちよ より:

      コメントありがとうございます。
      必ず解決できるとは決して言えませんが
      どういった文字が文字化けしてしまったのか
      差し支えなければ教えていただければと思います。
      よろしくおねがいします。

  2. たんぽぽ より:

    有用な情報をありがとうございます。
    いつも勉強させていただいております。
    ダウンロードが出来ないため、記載の通り「コードをテキストとして保存し「.txt」を「.vbs」に変更する」というのを試してみました。
    ファイルの生成はできたのですが、CSVファイルをvbsファイルにドロップすると、「_ダブルクォーテーション付.csv」というファイルができるはずなのですが、ファイル名が文字化けしてしまいました。

    具体的には、
    「book1.csv」をドロップすると、「book1_繝€繝悶Ν繧ッ繧ゥ繝シ繝・・繧キ繝ァ繝ウ莉・csv」という名前のファイルが作成されてしまいました。

    名前の変更でファイル名拡張子を「.csv」に手入力修正すると、「csvファイル」となり、無事、ダブルクォーテーション付きのcsvファイルとなります。

    もしコードの変更等で修正できるようであれば、ご教示いただきたく存じます。
    よろしくお願いします。

  3. たんぽぽ より:

    川端ちよ 様

    早速ご返信いただき、ありがとうございます!
    2018年の記事でしたのでコメントが届くか心配でしたが、
    コメント送信してよかったです。

    コメント内に記載していただいたURLを右クリックし、DLさせていただきました。
    文字化けすることなく、理想通りの処理ができました。
    また、色々と勉強させていただきます。
    ありがとうございました。

    • 川端ちよ 川端ちよ より:

      >たんぽぽさん
      解決したようで良かったです。
      可能であれば質問には対応予定です。
      (こちらでも不明な事はあるとは思いますが;;)

  4. みみお より:

    有用な情報ありがとうございます。
    VBAの知識が無くて申し訳ないのですがUTF-8のファイルをドロップした場合、ダブルクォーテーションは付与されるのですが文字列が文字化けしてしまいます。
    入出力ともにUTF-8としたい場合はどこを直せばよいかご教示いただくことは可能でしょうか?

    • 川端ちよ 川端ちよ より:

      >みみおさん
      ご連絡ありがとうございます。

      まず、一点訂正したいのですが、vbsの文字コードは確認したましたところUTF-8ではなく、ANSIでした。
      ANSIで作成した場合ファイル名等の文字化けが解消されます。

      文字化けして出力されるというのはファイル内のデータが
      「111,222,333,あああ」だった場合
      出力したファイルの方だと「”111″,”222″,”333″,”縺ゅ≠縺”」のように
      なってしまうという意味でよろしかったでしょうか?

      おそらく文字コードANSIのvbsにUTF-8のcsvをドロップしているのが原因かと思われます。
      csvは元々カンマ区切りのテキストファイルかと思いますので、一度文字コードをANSIにした上で
      ドロップすると解消されるかと思います。

      vbsもcsvもUTF-8にしたいとの事ですが、
      vbsをUTF-8で作成してもUTF-8のcsvでは文字化けしてしまいます。
      基本的にはFileSystemObjectでutf-8が扱えないのが原因です。
      扱いたい場合は「ADODB.Stream」などを使うようですが
      当方で扱ったことがなく、
      今現在のところANSI同士のみでの動作となってしまいます。
      お役に立てず申し訳ないのですが、ご確認お願いいたします。

タイトルとURLをコピーしました