如何自动将csv文件转换为启用宏的Excel?

时间:2012-02-24 20:03:02

标签: vba csv excel-2010

我有一个包含许多列的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

1 个答案:

答案 0 :(得分:0)

假设您的csv文件和关联的宏每次都看起来一致,请考虑以下几点:

考虑将csv中的数据添加到具有现有宏的现有excel文件中,而不是转换csv并添加宏。这更容易。

预先使用宏创建excel文件。在您的脚本中打开现有的Excel文件,使用csv数据更新它,并“另存为”新文件。

如果宏和csv格式确实发生了巨大变化,那么这可能并不理想。如果您发布一些示例csv数据和vbs,那么我可能会给您一个更具体的答案。