【发布时间】:2012-03-15 06:53:33
【问题描述】:
我有一个包含许多列的 CSV 文件,我想将这些列导入 Excel,然后选择所需的列并绘制图表。
我可以在 .xlms(启用宏的 Excel 文件)中完成所有这些操作,但我想编写一个批处理脚本来自动将 csv 转换为 xlsm,然后将我的宏添加到其中。
如果我在 Excel 之外将宏保存为 .vbs 文件,是否可以将它们添加到 Excel 文件中?
选项显式 出错时继续下一步
Excel 宏示例
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
【问题讨论】:
标签: vba csv excel-2010