VBS - 尝试阻止文本字符串转换为Date

时间:2013-09-25 19:51:59

标签: string date text vbscript

我正在使用VB脚本将CSV文件转换为制表符分隔(txt)格式。在txt结果文件中,有几个值被转换为日期格式,然后保存为表示日期的数字(即:703359)。我能想出的最佳解决方案是添加.NumberFormat =“@” 符合条件。这至少会将数字表示更改为输出中的日期(Aug-01)。

非常感谢任何帮助!

谢谢, 克里斯。

从SQL中的存储过程调用VB脚本: // SQL“呼叫”:     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

1 个答案:

答案 0 :(得分:1)

取决于.csv文件中的数据(例如,没有带前导零的OrderNums,描述中没有“,”/“;”),您需要应用于.txt文件的工具的要求(不需要)引用/取消引用char字段),以及文件的大小,你可能会蛮力逃脱

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

如果您需要更多地控制格式,请考虑使用ADO(连接,“INSERT / SELECT INTO”)和schema.ini文件。 (参见Much ADO About Text Files开始使用)

这两种策略都避免使用Excel,因此无法解决问题。