Я новичок в кодировании 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.
Решение для этой строки кода или любые другие полезные комментарии будут с благодарностью.