Мне нужно экспортировать из Excel как CSV, используя VBScript.База данных, в которую я импортирую CSV-файл, хочет, чтобы данные были в кавычках.
' Set output type constant
Const xlCSV = 23
Const xlYes = 1
Const xlAscending = 1
Const xlDescending = 2
' Open Excel in background
Set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = FALSE
' Make Excel object visible
objExcel.visible = TRUE
' Open source file
Set obj2 = objExcel.Workbooks.open("\\ntptc\Public\test\bins\DomesticCollectionItemsV2.csv")
' Set data format
obj2.Worksheets("DomesticCollectionItemsV2").range("D:E").NumberFormat = "0"
obj2.Worksheets("DomesticCollectionItemsV2").range("Q:R").NumberFormat = "dd/mm/yyyy"
obj2.Worksheets("DomesticCollectionItemsV2").range("X:Y").NumberFormat = "dd/mm/yyyy"
'Sort data
Set objWorksheet = obj2.Worksheets(1)
Set objRange = objWorksheet.UsedRange
Set objRange1 = objExcel.Range("N1")
Set objRange2 = objExcel.Range("O1")
objRange.Sort objRange1,xlYes
' Remove duplicates
obj2.Worksheets("DomesticCollectionItemsV2").range("A:EE").RemoveDuplicates Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15), xlYes
obj2.Worksheets("DomesticCollectionItemsV2").range("A:EE").RemoveDuplicates Array(12,13,14,15,16,17,18,19,20,21,22,23,24,25), xlYes
' Remove Expired and erroneous data
Dim myRow
For myRow = 5000 To 1 Step -1
If (obj2.Worksheets("DomesticCollectionItemsV2").Cells(myRow, 14).Value = "Expired") Then
obj2.Worksheets("DomesticCollectionItemsV2").Rows(myRow).EntireRow.Delete
End If
If (obj2.Worksheets("DomesticCollectionItemsV2").Cells(myRow, 14).Value = "Quotation") Then
obj2.Worksheets("DomesticCollectionItemsV2").Rows(myRow).EntireRow.Delete
End If
Next
'Sort data
objRange.Sort objRange1, xlAscending, objRange2, , xlAscending, , , xlYes
' Remove Expired and erroneous data
Dim myRow1
For myRow1 = 10000 To 1 Step -1
If (obj2.Worksheets("DomesticCollectionItemsV2").Cells(myRow1, 15).Value = "Assisted Collection Contract") Then
obj2.Worksheets("DomesticCollectionItemsV2").Rows(myRow1).EntireRow.Delete
End If
If (obj2.Worksheets("DomesticCollectionItemsV2").Cells(myRow1, 15).Value = "Clinical Waste Collection Service Contract") Then
obj2.Worksheets("DomesticCollectionItemsV2").Rows(myRow1).EntireRow.Delete
End If
If (obj2.Worksheets("DomesticCollectionItemsV2").Cells(myRow1, 15).Value = "NULL") Then
obj2.Worksheets("DomesticCollectionItemsV2").Rows(myRow1).EntireRow.Delete
End If
Next
' Open template
Set obj1 = objExcel.Workbooks.open("\\ntptc\Public\test\bins\toby\When-is-my-bin-day(new3).xlsx")
' Copy from source file to template
obj2.Worksheets("DomesticCollectionItemsV2").range("A1:AE110000").copy
obj1.Worksheets("DataTransform").range("A:AE").pastespecial
obj1.Worksheets("DataTransform").range("D:E").NumberFormat = "0"
obj1.Worksheets("DataTransform").range("Q:R").NumberFormat = "dd/mm/yyyy"
obj1.Worksheets("DataTransform").range("X:Y").NumberFormat = "dd/mm/yyyy"
' Close Source file
obj2.Close False
' Copy within template
obj1.Worksheets("DataTransform").range("AN:AP").copy
obj1.Worksheets("Export File").range("A:C").PasteSpecial -4163
'obj1.Worksheets("Export File").range("A:A").NumberFormat = "0"
obj1.Worksheets("Export File").range("C:C").NumberFormat = "dd/mm/yyyy"
obj1.Worksheets("DataTransform").range("AR:BB").copy
obj1.Worksheets("Export File").range("D:N").PasteSpecial -4163
' Remove duplicates
obj1.Worksheets("Export File").range("A:N").RemoveDuplicates Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14), xlYes
' Set worksheet to be exported
Set obj3 = obj1.Worksheets("Export File")
' Save output as CSV
obj3.SaveAs "\\ntptc\Public\test\bins\KESCollections.csv", xlCSV
' Close Template
obj1.Close False
' Close Excel
objExcel.Quit
Если я добавлю кавычки или отформатирую ячейку в Excel, чтобы добавить кавычки, она выводит по три партии кавычек каждая.сторона данных ячейки.
Я попытался отформатировать столбцы как пользовательские, используя "\0\"
или "\@\"
.Я пытался добавить кавычки в VBS, но что бы я ни делал, я все равно получаю слишком много кавычек в CSV
Исходный вывод
100060018803,Garden Waste Collection Service,09/07/2019
Фактический вывод
"""100060018803""","""Garden Waste Collection Service""","""09/07/2019"""
Желаемый вывод
"100060018803","Garden Waste Collection Service","09/07/2019"
Есть ли способ заставить его выводить CSV только с одним набором кавычек?