2013-04-25 7 views
-1

В настоящее время я имею ниже код, который сохраняет две таблицы данных в книгу Excel на двух отдельных листах, а затем открывает книгу:Access VBA: Экспорт таблицы в Excel 2010 сводной таблицы

Dim outputFileName As String 
Dim outputFile As String 
outputFile = "Export_" & Format(Date, "yyyyMMdd") & Format(Time, "_hhmm") & ".xlsx" 
outputFileName = CurrentProject.Path & "\" & outputFile 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Callouts", outputFileName, True 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Members", outputFileName, True 

'Load Excel 
Set appExcel = New Excel.Application 
Set wbkOutput = appExcel.Workbooks.Open(outputFileName) 

'Show excel window 
appExcel.Visible = True 

я хотел добавить код для создания сводной таблицы для отображения данных в excel, но я не уверен, как это сделать - может ли кто-нибудь помочь? :-)

+0

Что вы подразумеваете под «форматированием таблицы» в сводную таблицу "? Вы хотите * создать * сводную таблицу на основе таблицы данных? – Barranka

+0

Это, вероятно, то, что я хочу сделать, но у меня может быть неправильная терминология - по сути, я бы хотел, чтобы код запускался так, что когда Excel открывается, он показывает экспортированные данные в сводной таблице. Благодарю. – duney

+0

Хорошо, позвольте мне попробовать по-другому: вы хотите * создать * сводную таблицу на основе данных, которые у вас уже есть в вашей таблице, или вы хотите отформатировать свои данные, ячейки по ячейкам, чтобы показать что-то вроде * a сводная таблица? – Barranka

ответ

0

Вот пример кусок кода, который создает сводную таблицу:

... 
Dim aSheet as Worksheet 
Set aSheet = ThisWorkbook.Sheets.Add 
ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
           SourceData:="Sheet1!A1:D1000", 
           Version:=xlPivotTableVersion12). _ 
    CreatePivotTable TableDestination:=aSheet.Name&"!A1", _ 
        TableName:="YourPivotTable", _ 
        DefaultVersion:=xlPivotTableVersion12 
ThisWorkbook.Sheets(aSheet.Name).Select 
' Add the column field (the name of the pivot field is one of your data table) ' 
With ActiveSheet.PivotTables("YourPivotTable").PivotFields("columnHeaderField") 
    .Orientation = xlColumnField 
    .Position = 1 
End With 
' Add the row field (the name of the pivot field is one of your data table) ' 
With ActiveSheet.PivotTables("YourPivotTable").PivotFields("rowHeaderField") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
' Add the data field 
With ActiveSheet.PivotTables("YourPivotTable") 
    .AddDataField .PivotFields("aValueField"), "Sum of a value", xlSum 
    .AddDataField .PivotFields("anotherValueField"), "Sum of another value", xlSum 
End With 
... 

Надеется, что это помогает вам

+0

Я использую этот код, однако ничего не происходит, код запускается успешно, файл Excel создается успешно, но точка поворота не создается на листе. Сначала я заполняю исходные данные, а затем пытаюсь сделать сводную таблицу. Исходные данные создаются, но опорная точка не создается. Любая идея почему? –

0

Не уверен, если вы, наконец, найти его, однако, в моем коде, если я использую поле position и xlrow/column, ничего не происходит. Я избавился от них и использовал только .orientation = 1 для xlcolumnfield, 2 для xlrowfield, 3 для фильтрации и 4 для AddDataField. Я не объявлял позицию, сам Excel корректировал позицию в соответствии с порядком, который я написал в коде. Сказал, что вместо этого я придерживаюсь формулы: я не могу изменить ее из подсчета в сумму; Я попытался с просто переименовать значение и, кажется, работает, поскольку в списке полей он показывает «Сумма ...», но в своде я все еще получаю счет ...

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