通过VBScript自定义Excel

时间:2017-07-20 12:30:24

标签: excel vb.net vba excel-vba csv

我在这里提供我所需的Excel模板。就我目前的情况而言,这个excel将存储在修复路径中。但CSV会每天生成。

我的vb脚本应该每天执行以从csv收集数据并写入此Excel,但需要进行小型自定义。

这里前3行是Fixed Header,我需要转换csv并在第4行的excel中写入值。但显而易见,我们有旧的数据。所以它应该删除第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

标题和图例应固定为屏幕截图。

但也可以采用替代方式。如果我可以获得一些修改后的vb脚本,它可以像上面的截图一样创建Header(即合并单元格,边框,冻结,删除网格线)并在底部添加图例,那么我不需要每天写入现有的Excel。有史以来当vbs执行时,它应该用这种正确的格式替换旧的excel(如果存在)。

Sample Excel output

1 个答案:

答案 0 :(得分:0)

记录创建标题和图例的宏。然后编辑代码以清理所有 .Select ... Selection 语句。 ...在您发布的代码中,您可以使用其中一个

通过一个命令自动调整所有列
ActiveSheet.Columns("A:Q").AutoFit
ActiveSheet.Range(Columns(1), Columns(17)).AutoFit