2012-02-24 2 views
1

У меня есть файл CSV со многими столбцами, которые я хочу импортировать в Excel, затем выберите нужные столбцы и постройте график.Как я могу автоматизировать преобразование csv-файла в макрос excel?

Я могу сделать все это в формате .xlms (файл с поддержкой макроса Excel), но я хочу написать пакетный скрипт, который может автоматизировать преобразование csv в xlsm, а затем добавить в него мои макросы.

Могу ли я добавить макросы в файл Excel, если я сохраню их вне Excel в виде файлов .vbs?

Option Explicit 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

Предположим, что ваш файл CSV и соответствующий макрос будет выглядеть последовательным каждый раз, считайте это:

Вместо преобразования csv и добавления макроса подумайте о добавлении данных из csv в существующий файл excel с существующим макросом. Это намного проще.

Создайте файл excel с макросом заранее. В своем скрипте откройте существующий файл excel, обновите его данными csv и «saveAs» - новый файл.

Если макрос и формат csv сильно изменяются, это может быть не идеальным. Если вы разместите некоторые данные csv образца и vbs, я мог бы дать вам более конкретный ответ.

+0

Я обновил сообщение с помощью фрагмента кода, не могли бы вы помочь? Благодаря! – Jai

+0

У меня есть что-то для работы сегодня, я создал промежуточную CSVImporter.xlsm, содержащую макрос, чтобы сохранить csv в xlsm. Затем я ввел макрос (используя objworkbook.VBProject.VBComponents.Add (1)), чтобы построить график в созданном выше xlsm, а затем сохранить и запустить этот встроенный макрос. – Jai

Смежные вопросы