Как я могу автоматизировать преобразование файла CSV в макрос с поддержкой Excel? - PullRequest
1 голос
/ 25 февраля 2012

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

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

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

Параметр Явный при ошибке Возобновить Далее

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 голосов
/ 25 февраля 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...