Kolor Excel oparty na wartości komórki w VBScript - excel, vba, csv, vbscript

Mam jeden VBS, który konwertuje mój CSV do Excela. Teraz mój plik CSV zawiera kilka znaków takich jak "!" Chcę kolor żółty na komórki, które mają tę postać po konwersji na Excel.

Sample.CSV:

 Name,Location,Phone,Comment1,Comment2
"ABC","Pune",123,"Expert Value","! Easy"
"XYZ","Kol",567,"! Expert value",Easy"

Wymagania: po konwersji do Excela potrzebuję E2 i komórki D3 bądź tak żółty

MyScript.vbs: który wymaga dwóch argumentów do wykonania

cscript C:TestMyScript.vbs \C:TestSample.CSV \C:TestSample.xlsx

Oto oryginalny skrypt

"======================================
" Convert CSV to XLS
"
" arg1: source - CSV pathfile
" arg2: target - Excel pathfile
"======================================

srccsvfile = Wscript.Arguments(0)
tgtxlsfile = Wscript.Arguments(1)

"Create Spreadsheet
"Look for an existing Excel instance.
On Error Resume Next " Turn on the error handling flag
Set objExcel = GetObject(,"Excel.Application")
"If not found, create a new instance.
If Err.Number = 429 Then  "> 0
Set objExcel = CreateObject("Excel.Application")
End If

objExcel.Visible = false
objExcel.displayalerts=false

"Import CSV into Spreadsheet
Set objWorkbook = objExcel.Workbooks.open(srccsvfile)
Set objWorksheet1 = objWorkbook.Worksheets(1)

"Adjust width of columns
Set objRange = objWorksheet1.UsedRange
objRange.EntireColumn.Autofit()
"This code could be used to AutoFit a select number of  columns
"For intColumns = 1 To 17
"    objExcel.Columns(intColumns).AutoFit()
"Next

"Make Headings Bold
objExcel.Rows(1).Font.Bold = TRUE

"Freeze header row
With objExcel.ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
objExcel.ActiveWindow.FreezePanes = True

"Add Data Filters to Heading Row
objExcel.Rows(1).AutoFilter

"set header row gray
objExcel.Rows(1).Interior.ColorIndex = 15
"-0.249977111117893


"Save Spreadsheet, 51 = Excel 2007-2010
objWorksheet1.SaveAs tgtxlsfile, 51

"Release Lock on Spreadsheet
objExcel.Quit()
Set objWorksheet1 = Nothing
Set objWorkbook = Nothing
Set ObjExcel = Nothing

wprowadź opis obrazu tutaj

Odpowiedzi:

1 dla odpowiedzi № 1

Dodaj poniżej pętle "For" w swoim kodzie. Będzie szukać "!" i pokoloruj komórkę na żółto. Zakodowałem to w edytorze Notepad ++. Dlatego możesz potrzebować trochę debugowania.

"set header row gray
objExcel.Rows(1).Interior.ColorIndex = 15
"-0.249977111117893

For intRowCounter = 2 to objWorksheet1.usedRange.Rows.Count "Skip header row
For intColumnCounter = 1 to objWorksheet1.usedRange.Columns.Count
If instr(1, objWorksheet1.Cells(intRowCounter, intColumnCounter).Value, "!", 1) > 0 Then
objWorksheet1.Cells(intRowCounter, intColumnCounter).Interior.ColorIndex = 6 "Shade of Yellow 27, 44 , 36 also can be used
End If
Next
Next


"Save Spreadsheet, 51 = Excel 2007-2010
objWorksheet1.SaveAs tgtxlsfile, 51

Menu