2012-02-24 175 views
1

我有一个CSV文件,包含许多需要导入到Excel中的列,然后选择所需的列并绘制图表。如何自动将csv文件转换为启用宏的宏?

我可以在.xlms(启用宏的Excel文件)内完成所有这些工作,但我想编写一个批处理脚本,可以自动将csv转换为xlsm,然后将其添加到其中。

如果我将它们作为.vbs文件保存在Excel之外,我可以将宏添加到Excel文件吗?

显式的选项 上的错误继续下一步

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

假设你的csv文件和相关的宏观看起来一致每次考虑这个:

与其转换csv并添加宏,不如考虑使用现有的宏将csv中的数据添加到现有的excel文件中。这很容易。

事先用宏创建excel文件。在你的脚本中打开现有的excel文件,用csv数据更新它,然后'saveAs'一个新文件。

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

+0

我已经用代码片段更新了我的帖子,可以请帮忙吗?谢谢! – Jai 2012-02-27 16:23:45

+0

今天我得到了一些工作,我创建了一个包含宏的中间CSVImporter.xlsm,以将csv保存到xlsm中。然后我注入宏(使用objworkbook.VBProject.VBComponents.Add(1))将我的图表绘制到上面创建的xlsm中,然后保存并运行此注入的宏内联。 – Jai 2012-02-28 16:20:13