0

VB スクリプトを使用して、CSV ファイルをタブ区切り (txt) 形式に変換しています。txt 結果ファイルには、日付形式に変換され、日付を表す数値 (例: 703359) として保存されたいくつかの値があります。私が思いついた最善の修正は、With 基準に .NumberFormat = "@" を追加することでした。これにより、少なくとも数値表現が出力の日付 (Aug-01) に変更されます。

どんな助けでも大歓迎です!

ありがとう、クリス。

SQL のストアド プロシージャからの VB スクリプトの呼び出し: //SQL "Call": exec master..xp_cmdshell 'c:\byr\CSVtoTAB_SKUCodeProtected.vbs C:\byr\SkusOrdered.csv C:\byr\SkusOrdered.txt

// VB コードの開始:

if WScript.Arguments.Count < 2 Then
'    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Dim oBook
Dim oSheet
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
Set oSheet = oBook.Sheets(1)
With oSheet
    .Columns(1).NumberFormat = "@"
End With
oBook.SaveAs WScript.Arguments.Item(1), 20
oBook.Close False
oExcel.Quit
SET oBook = NOTHING
SET oExcel = NOTHING
'WScript.Echo "Done"

//サンプルデータ:

OrderNum    Sku Description Qty
12988   MHT1101 2010 LBB MANHATTAN  2
12998   MHT1101 2010 LBB MANHATTAN  1
13034   Aug-01  2010 LYB AUGUSTA    3  <-- One of the offending SKU's
13072   ATA2101 2010 LYB ATLANTA    1
13102   MHT1101 2010 LBB MANHATTAN  4
13115   MHT1101 2010 LBB MANHATTAN  5
4

1 に答える 1

1

.csv ファイルのデータに応じて (たとえば、先頭にゼロが付いた OrderNum がない、説明に ","/";" がない)、.txt ファイルに適用する必要があるツールの要件 (/ を引用する必要はありません) unquote char フィールド)、およびファイルのサイズを考慮すると、力ずくで逃げる可能性があります。

  tsTxt.Write Replace(tsCsv.ReadAll(), ",", vbTab)

フォーマットをさらに制御する必要がある場合は、ADO (接続、"INSERT/SELECT INTO") と schema.ini ファイルの使用を検討してください。(開始するには、テキスト ファイルについての ADOを参照してください)

どちらの戦略も Excel を回避するため、問題が発生することはありません。

于 2013-09-25T20:27:18.067 に答える