У меня есть следующий код (благодаря ответу на этом сайте), который выбирает лист в Excel и выбирает имя сводной таблицы на нем.
Sub PivotTableName()
Sheets("PivotTable").Select
Dim pt As PivotTable
Set pt = ActivePivotTable
If pt Is Nothing Then
Debug.Print "No Active pivot table"
Else
Debug.Print "Active = " & pt.Name
End If
End Sub
Function ActivePivotTable() As PivotTable
Dim pt As PivotTable, rv
For Each pt In ActiveSheet.PivotTables
Debug.Print pt.Name, pt.TableRange2.Address
If Not pt.Name = "" Then
Set ActivePivotTable = pt
Exit Function
End If
Next pt
End Function
Сводная таблица импортируется из базы данных MySQL и является единственной сводной таблицей на листе. Если таблица Excel Excel открывается и таблица импортируется (с использованием надстройки MySQL для Excel), а затем выполняется макрос, макрос работает отлично, давая ответ
Active = project1.mytable
Однако, если эта сводная таблица будет удалена и снова импортирована, Excel изменит новое импортированное имя сводной таблицы на "project1.mytable.2", однако при запуске макроса он все равно возвращается
Active = project1.mytable
Я удаляю сводную таблицу с помощью ctrl + a, а затем Delete, когда у меня есть ячейка в сводной таблице.
Кто-нибудь знает, почему он не подбирает правильное имя?
Если в листе "Сводная таблица" имеется только 1 PivotTable
таблица, достаточно кода ниже:
Sub PivotTableName()
Dim i As Long
With Sheets("PivotTable")
If .PivotTables.Count > 0 Then
' ==== DEBUG SCRIPT ====
For i = 1 To .PivotTables.Count
Debug.Print "Active = " & .PivotTables(1).Name
Next i
Debug.Print "Active = " & .PivotTables(1).Name
Else
Debug.Print "No Active pivot table"
End If
End With
End Sub
Sheets("PivotTable").PivotTables(1).Name
?Name
сводной таблицы? Ваш лист всегда содержит однуPivotTable
таблицу?