Я пытаюсь сделать следующее:
- Используя VBScript, экспортировать данные из QlikView в Excel
- Используя VBScript, вызвать макрос Excel
- Иметь Excel Макрос, который создает сводную таблицу на основе данных, загруженных с шага 1
Я успешно экспортировал данные (шаг 1) и запустил макрос Excel (шаг 2).
Этот макрос теоретически должен выполнить шаг 3 (если я запускаю его вручную из Excel, он успешно завершается).
Однако, когда макрос, запущенный на шаге 3, создает сводную таблицу, он затем происходит сбой и в QlikView сообщение VBScript выглядит так:
Невозможно запустить макрос 'procBuildPivot'. Макрос может быть недоступен в этой книге или все макросы могут быть отключены.
Это определенно не тот случай, так как, если я запускаю макрос непосредственно в Excel, создается сводная таблица. В качестве альтернативы, если я вызываю макрос из QlikView для выполнения каких-либо действий (вплоть до и без построения сводной таблицы), он работает.
Мой VBScript:
Set objExcelApp = CREATEOBJECT("Excel.Application")
Set objExcelSheet = objExcelApp.Worksheets("Sheet 1")
objExcelApp.Workbooks.Open "Test.xlsm"
objExcelApp.Application.Run "procBuildPivotReport"
objExcelSheet.SaveAs "Test2.xlsm"
SET objExcelSheet = NOTHING
SET objExcelApp = NOTHING
Мой VBA:
Sub procBuildPivotReport()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws as Worksheet
Set ws as ActiveSheet
Dim pvtCache as PivotCache
Dim pvt as PivotTable
Set pvtCache = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("QV Data").Range("A1:D10"), Version:=6)
Set pvt = ws.PivotTables.Add(PivotCache, TableDestination:=Range("J1"), TableName:= "Sales Analysis")
With pvt
.PivotFields("Project ID").Orientation = xlRowField
.PivotFields("Name").Orientation = xlColumnField
.PivotFields("Hours").Orientation = xlDataField
Emd With
End Sub
Независимо, VBA работает (при вызове непосредственно из Excel), а VBScript работает для отправки данных и вызова макроса Excel
Проблема возникает, когда я пытаюсь объединить два и построить сводная таблица.