Макрос Excel VBA Создание сводной таблицы с динамическим диапазоном данных: ошибка диапазона исходных данных - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в кодировании VBA и пытаюсь создать макрос Excel, который создаст сводную таблицу на основе динамического диапазона данных.Я использую Excel 2016.

Количество столбцов в данных останется неизменным, но количество строк является динамическим.

В моей таблице данных столбец BZ содержит количество записей в наборе данных.Например, если в наборе данных 30 записей, каждое значение в столбце BZ будет равно 30. (Эти данные импортируются из SAS с использованием DDE, поэтому я выбрал этот метод).Поэтому я добавил 1 в переменную lastRow ниже, чтобы включить имена столбцов.

Мой код макроса VBA в настоящее время выглядит следующим образом:

Sub Macro1()
   Dim xlsPath As String
   Dim xlsFile As String
   Dim lastRow As Integer
   Dim SrcData As String
   Dim StartPvt As String
   Dim pvtCache As PivotCache
   Dim pvt As PivotTable

   xlsxPath = "N:\Analytics\Test\DDE\"
   xlsxFile = "Test.xlsx"

   lastRow = Sheets(1).Range("BZ2") + 1

   SrcData = ActiveSheet.Name & "!" & Range("A1:R" & lastRow & "C77").Address(ReferenceStyle:=xlR1C1)

   StartPvt = sht.Name & "!" & sht.Range("A3").Address(ReferenceStyle:=xlR1C1)

   Workbooks.Open Filename:=xlsxPath & xlsxFile

   Range("A1:BY" & lastRow).Select

   Sheets.Add

   Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
   SourceType:=xlDatabase, _
   SourceData:=SrcData, Version:=6)

   Set pvt = pvtCache.CreatePivotTable( _
   TableDestination:=StartPvt, _
   TableName:="PivotTable1", DefaultVersion:=6)

   Columns("BZ:BZ").Select
   Selection.Delete Shift:=xlToLeft
   ActiveWorkbook.Save
   ActiveWorkbook.Close
End Sub

Это приводит к ошибке, которая говорит:

Ошибка времени выполнения '1004':

Ошибка метода 'Range' объекта'_Global '

Отладчик указывает на строку, где находится диапазон SrcDataопределяется.Я думаю, что проблема может быть в синтаксисе, где я указал lastRow в Range.

Решение для этой строки кода или любые другие полезные комментарии будут с благодарностью.

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