我在这里给我所需的Excel模板。正如我目前的情况,这个excel将被存储在一个修复路径中。但CSV每天都会生成。通过VBScript自定义Excel
我的VB脚本应该每天执行以从csv收集数据并写入此Excel,但需要小的定制。
这里前3行是固定标题,我需要转换csv并在excel中写入第4行的值。但很明显,我们在那里有旧数据。所以应该删除第4行到第7行,并根据需要放置csv值。也有适当的边界。
现在告诉我是否可以修改我的vbs来获得这种类型的输出?
运行脚本像下面... MyScript.vbs:这需要两个参数执行
cscript C:\Test\MyScript.vbs \\C:\Test\Sample.CSV \\C:\Test\Sample.xlsx
原始脚本如下。但我想查看下面的截图。
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
aList=Array("NOT ", "NO ", "NONE", "!")
For each item in aList
For Each c In objWorksheet1.UsedRange
If InStr(1, c.Value, item) > 0 Then
c.Interior.ColorIndex = 6
End If
Next
next
'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
Header and Legend should be fixed as screenshot。
但也可以有替代方法。如果我可以得到一些可以像上面的截图一样创建Header的修改的VB脚本(即合并单元格,边框,冻结,移除网格线)并在底部添加图例,那么我不需要每天写入现有的Excel。当vbs执行时,它应该用这个适当的格式替换旧的excel(如果存在)。
一个自动调整所有使用一个命令栏添加下面的'objExcel.Rows(1).AutoFilter'这一行: **'objExcel .Columns.Autofit()'**并且应该为你做自动适应技巧。 – ian0411