2017-07-19 178 views
0

我有一个将我的csv转换为excel的VBS。 现在我的CSV中有一些人物像“!” 我想在转换为excel之后在那些具有该字符的单元格上使用黄色。基于VBScript中单元格值的颜色Excel

Sample.CSV:

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

要求:转换到Excel后,我需要E2和D3单元格应 像黄

MyScript.vbs:这需要两个参数执行

cscript C:\Test\MyScript.vbs \\C:\Test\Sample.CSV \\C:\Test\Sample.xlsx 

这里是原始脚本

'====================================== 
' Convert CSV to XLS 
' 
' arg1: source - CSV path\file 
' arg2: target - Excel path\file 
'====================================== 

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 

enter image description here

回答

1

包括下面的for循环在你的代码。它会搜索“!”并将细胞染成黄色。我用Notepad ++编辑器编写了这个代码。因此,您可能需要一些调试。

'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 
+0

嗨,感谢您的代码示例... 这完全符合我的要求。 只是想知道如果我想通过多个搜索值,我会在这里。 也就是说,我的一些单元格值是“不”,“否”,“无”和“!”所以我想突出显示所有这些细胞。 – goldenbutter

+0

提供数据看起来如何的样本 –

+0

看到..我在我的文章中添加了一个示例输出,其中我的单元格值将会是NOT,NO或!那个细胞会变黄 – goldenbutter