我有一个包含许多列的CSV文件,我想将其导入Excel,然后选择所需的列并绘制图表。
我可以在.xlms(启用宏的Excel文件)中完成所有这些操作,但我想编写一个批处理脚本,可以自动将csv转换为xlsm,然后将我的宏添加到其中。
如果我将这些宏保存在Excel之外作为.vbs文件,我可以将其添加到Excel文件中吗?
选项明确 On Error Resume Next
ExcelMacroExample
Sub ExcelMacroExample()
Dim xlApp
'Fire up XL
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
'Open the csv file and parse it into XL format
xlApp.Workbooks.Open "E:\sysmon.csv", 0, True
'OpenText bombed right away, dont know what is wrong here?
'xlApp.Workbooks.OpenText "E:\\sysmon.csv", , , xlDelimited, xlTextQualifierNone, False, False, False, True
' Save into macro enabled template, previously created with the macro
xlApp.ActiveWorkbook.SaveAs "E:\sysmon.xltm", xlOpenXMLTemplateMacroEnabled
'Run the macro
'xlApp.Run "Memory"
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
End Sub
我的内存宏保存在sysmon.xltm
中Sub Memory()
'
' Memory Macro
'
Range(Cells(1, 2), Cells(ActiveSheet.UsedRange.Rows.Count, 5)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range(Cells(1, 2), Cells(ActiveSheet.UsedRange.Rows.Count, 5))
ActiveChart.PlotArea.Select
ActiveChart.ApplyLayout (2)
ActiveChart.ApplyLayout (3)
ActiveChart.ChartTitle.Select
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Memusage"
With ActiveWorkbook.PublishObjects.Add(xlSourceChart, "E:\tetsysmon.mht", _
"Memusage", "", xlHtmlStatic, "tetsysmon_5126", "")
.Publish (True)
.AutoRepublish = False
End With
ChDir "E:\"
End Sub
答案 0 :(得分:0)
假设您的csv文件和关联的宏每次都看起来一致,请考虑以下几点:
考虑将csv中的数据添加到具有现有宏的现有excel文件中,而不是转换csv并添加宏。这更容易。
预先使用宏创建excel文件。在您的脚本中打开现有的Excel文件,使用csv数据更新它,并“另存为”新文件。
如果宏和csv格式确实发生了巨大变化,那么这可能并不理想。如果您发布一些示例csv数据和vbs,那么我可能会给您一个更具体的答案。