2017-05-25 7 views
-1

をelcosedカンマ(、)を交換してくださいフィールドは、私が最初にそれぞれの行を変更したいので、私は、この所望の出力を得る:は、私は以下のいずれかのよう、二重引用符で囲まれた文字列の一部としてカンマが含まれているCSVファイルをインポートしていた文字列に二重引用符で

 
a,b,c,d,e,f 
a,"b;c;d;e",f 

私が最初に検索したが、私は、スタックオーバーフロー上の何かを見つけられませんでした、と私はまれにしかVBScriptで動作しません。どんな助けもありがたい。

編集:私はこのタスク上記のコードで

Sub csv2tab() 
    Const ForReading = 1 
    Const ForWriting = 2 

    Dim regex As Object 
    Set regex = CreateObject("VBScript.Regexp") 
    regex.IgnoreCase = True 
    regex.Global = True 
    regex.Pattern = """[^""]*""|[^,]*" 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile("C:\Users\venkat\Desktop\Freelancers\Upwork_tasks\Chris Hickey\Datafiles\smallerfile_11.csv", ForReading) 

    Do Until objFile.AtEndOfStream 
     strLine = objFile.ReadLine 
     strLine = Replace(strLine, regex.Replace(Line, ","), vbTab) 
     strNewText = strNewText & strLine & vbCrLf 
    Loop 
    objFile.Close 

    Set objFile = objFSO.OpenTextFile("C:\Users\venkat\Desktop\Freelancers\Upwork_tasks\Chris Hickey\Datafiles\test.txt", ForWriting) 

    objFile.WriteLine strNewText 
    objFile.Close 
End Sub 

を完了するために使用されるコードを追加して編集、私は同様にタブに区切り文字を変更しようとしているが、私のために必須ではないのです。私は正規表現をどこかに混乱させたと思う。

+0

スタックオーバーフローはコード作成サービスではありません。あなた自身でこの問題を解決するために努力してください。問題が発生した場合は、遭遇した問題について説明し、コードの関連部分を含めることができ、そのコードに関する特定の質問をしてください。がんばろう。 –

+1

'split(input、"、 ")'を使ってcsvデータを解析すると、私は悲しいです。これは多くの人の一例です。 Split()の代わりに専用の専用のCSVパーサーを探してください。突然この問題は解消されます。 –

+0

@KenWhite、私は試したコードでトピックを更新しました。 – Venkat

答えて

1

デセント .CSVは、各行(および列ヘッダー)に同じ数の列を持ちます。だからあなたのサンプルデータは、次のようになります。

"C1","C2","C3","C4","C5","C6" 
a,b,c,d,e,f 
a,"b1,b2,b3",c,d,"e1,e2,e3,e4",f 

特殊な例で.CSVお得な情報を扱うためのまともツール(引用された分野で例えば、セパレータ)自動的:

Option Explicit 

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") 
Dim sDDir : sDDir = goFS.GetParentFolderName(WScript.ScriptFullName) 
Dim oCN : Set oCN = CreateObject("ADODB.Connection") 
Dim sCS : sCS = Join(Array(_ 
    "Driver=Microsoft Access Text Driver (*.txt, *.csv)" _ 
    , "DBQ=" & sDDir _ 
    , "Extensions=asc,csv,tab,txt" _ 
), ";") 
Dim oRS 

WScript.Echo "sCS:", sCS 
oCN.Open sCS 
Set oRS = oCN.Execute("SELECT * FROM [44187292.csv]") 
WScript.Echo oRS.GetString(2, , vbCrLf, vbCrLf & "----------" & vbCrLf, "<null>") 
oCN.close 

出力:

cscript 44187292.vbs 
sCS: Driver=Microsoft Access Text Driver (*.txt, *.csv);DBQ=e:\work\proj\soa\tmp;Extensions=asc,csv,tab,txt 
a 
b 
c 
d 
e 
f 
---------- 
a 
b1,b2,b3 
c 
d 
e1,e2,e3,e4 
f 
---------- 
関連する問題