Ich gebe meine benötigte Excel-Vorlage hier. Als mein gegenwärtiges Szenario wird dieses Excel in einem festen Pfad gespeichert. Aber CSV wird jeden Tag generieren.Customize Excel by VBScript
Mein vb-Skript sollte jeden Tag ausführen, um Daten von CSV zu sammeln und in dieses Excel schreiben, aber kleine Anpassung benötigt.
Hier sind die ersten 3 Zeilen Fixed Header, ich muss konvertieren csv und schreiben Werte in Excel aus der 4. Reihe. aber es ist offensichtlich, dass wir dort alte Daten haben. Daher sollte die 4. Zeile bis zur 7. Zeile gelöscht und der CSV-Wert wie gewünscht eingegeben werden. Mit der richtigen Grenze auch.
Jetzt sagen Sie mir, ist es möglich, meine Vbs zu ändern, um diese Art von Ausgabe zu bekommen?
das Skript wie unten laufen ... myscript.vbs: die zwei Argument braucht
cscript C:\Test\MyScript.vbs \\C:\Test\Sample.CSV \\C:\Test\Sample.xlsx
Original-Skript unten ausführen soll. aber ich möchte wie unten Screenshot anzeigen.
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 und Legende sollte als Screenshot behoben werden.
Aber es kann auch alternative Wege geben. Wenn ich ein modifiziertes vb-Skript erhalte, das Header wie im obigen Screenshot erstellen kann (d. H. Zelle zusammenfügen, Rahmen einfrieren, Gitterlinien entfernen) und unten eine Legende hinzufügen, muss ich nicht jeden Tag in existierendes Excel schreiben. Immer wenn VBS ausgeführt wird, sollte es altes Excel (falls vorhanden) durch dieses korrekte Format ersetzen.
diese Zeile hinzufügen unter 'objExcel.Rows (1) .AutoFilter': **' objExcel .Columns.Autofit() '** und das sollte den Autofit Trick für Sie tun. – ian0411