[[20120831192935]] 『csvファイルにダブルクォーテーション』(める) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『csvファイルにダブルクォーテーション』(める)
エクセル:Excel2003
OS:WindowsXP

今回もお世話になります。
ドラッグドロップで.xlsファイルを.csvファイルに変換するものを作成しました。
ダブルクォーテーションで区切るようにしたいのですが、何か方法はありませんか。
例) "aaa","bbb"
よろしくお願い致します。

以下ソース .vbpです。

If WScript.Arguments.Count = 0 Then

  MsgBox "xlsファイルをドラッグドロップしてください"
  WScript.Quit
End If

'Excelのファイルの数だけ繰り返す
For Each Excel_F_Name In WScript.Arguments

  '拡張子がExcelかどうか確認する
  If LCase(Right(Excel_F_Name, 3)) = "xls" Then

    'ExcelのObject定義
    Set Excel_Object = CreateObject("Excel.Application")

    'Excelの警告が出ないように設定
    Excel_Object.Application.DisplayAlerts = False

    'csvファイル名を設定
    Csv_File_Name_A = Mid(Excel_F_Name, 1, Len(Excel_F_Name)-4)&".csv"

    'カレントパスの取得
    Script_Path = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
    Set OBJ_File_SYS = CreateObject("Scripting.FileSystemObject")

    'Excelは表示しない
    Excel_Object.Visible = false

    'Excel ファイルをOpenする
    Set Excel_Book = Excel_Object.Workbooks.Open(Excel_F_Name)

    '1つ目のシートを対象
    Set Excel_Sheet = Excel_Book.Sheets(1)

    'ExcelのCell定義
    Set Excel_Cell = Excel_Sheet.Cells

    'Excelの「オートフィルタ」があればはずす
    If Excel_Sheet.AutoFilterMode Then
      If Excel_Sheet.FilterMode Then
        Excel_Sheet.ShowAllData
      End If
    End If

    Excel_Sheet.Select
    Excel_Sheet.Cells.Select

    'Excelの行と列の「表示しない」があればはずす
    Excel_Cell.EntireRow.Hidden = False
    Excel_Cell.EntireColumn.Hidden = False
    Excel_Sheet.Copy

    'CSV形式で保存する
    Excel_Book.SaveAs Csv_File_Name_A,6

    'Bookを閉じる
    Excel_Book.Close

    'Excelを閉じる
    Excel_Object.Quit
    Set Excel_Cell = Nothing
    Set Excel_Sheet = Nothing
    Set Excel_Book = Nothing
    Set Excel_Object = Nothing

  Else

    MsgBox Excel_F_Name
    MsgBox "xlsファイルをドラッグドロップしてください"

  End If

Next

MsgBox "xlsファイルをcsvファイルに変換しました"


 データ中に " や , がないことという前提ですが、

 Lines = Split(OBJ_File_SYS.OpenTextFile(Csv_File_Name_A).ReadAll(),vbNewLine)
 For i=LBound( Lines ) To UBound( Lines )
    Lines(i) = """" & Replace( Lines(i), ",", """,""" ) & """"
 Next
 OBJ_File_SYS.CreateTextFile(Csv_File_Name_A).Write Join( Lines, vbNewLine )

 のような後処理をしたらどうでしょうか。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.