2017-07-20 146 views
0

我在這裏給我所需的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(如果存在)。

Sample Excel output

+0

一個自動調整所有使用一個命令欄添加下面的'objExcel.Rows(1).AutoFilter'這一行: **'objExcel .Columns.Autofit()'**並且應該爲你做自動適應技巧。 – ian0411

回答

0

記錄創建報頭和圖例的宏。然後編輯代碼清理所有。選擇...選擇語句。 ...在你的代碼,你貼,你可以使用這些

ActiveSheet.Columns("A:Q").AutoFit 
ActiveSheet.Range(Columns(1), Columns(17)).AutoFit 
+0

嗨@jsotola你可以在這裏粘貼整個代碼,我應該適合Autofit代碼....實際上我不熟悉這些... – goldenbutter