Excel VBA: «определяемая приложением или объектная ошибка»

В Excel 2003 я получаю Runtime error 1004: «определяемая приложением или объектная ошибка» в последней строке этого кода (commandtext = abc)

Sub SCommandTxt() Dim abc as string abc = Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText = abc End Sub 

На самом деле это не то, что я пытаюсь сделать, но не зная, что вызывает ошибку во что-то столь же простое, как это подталкивает меня к стене. Таблица Pivot – это соединение ODBC. Следующий код был запущен до этого кода и отлично работает. Все, что я действительно хочу сделать, это динамически изменить запрос на основе изменяющегося диапазона «WhereFilters». Следующий запрос работает хорошо, но я бы предпочел не отображать и выбирать лист и проходить через pivotwizard, если я могу просто изменить commandText напрямую (хотя на основе ошибок, которые я получаю, возможно, нет … Хотя другие похоже, думаю, что это возможно, поэтому я не знаю, почему он не работает для меня):

 Sub UpdatePvt() Dim DBDir As String, DBName As String, SortType As String, Size As String Dim QueryArry1(0 To 100) As String, rng As Range, x As Integer DBDir = "C:\Documents and Settings\jt\" DBName = "DatabaseExample.mdb" If Range("ComboResult1") = 1 Then SortType = "TDollars" Sheets("Totals").PivotTables("PivotTable1").PivotFields("DIV_ID").AutoSort _ xlDescending, "Sum of Dollars" Sheets("Totals").PivotTables("PivotTable2").PivotFields("DIV_ID").AutoSort _ xlDescending, "Sum of Dollars" Else SortType = "TCounts" Sheets("Totals").PivotTables("PivotTable1").PivotFields("DIV_ID").AutoSort _ xlDescending, "Sum of Counts" Sheets("Totals").PivotTables("PivotTable2").PivotFields("DIV_ID").AutoSort _ xlDescending, "Sum of Counts" End If If Range("ComboResult2") = 1 Then Size = "Total" ElseIf Range("ComboParOUT") = 2 Then Size = "Small" Else Size = "Large" End If QueryArry1(0) = "SELECT Top 500 C.* " QueryArry1(1) = "FROM Final03 C " x = 2 If Not (Range("NoFilters")) Then QueryArry1(x) = "INNER JOIN (Select DIV_ID FROM FullLookup WHERE " x = x + 1 For Each rng In Range("WhereFilters") QueryArry1(x) = rng.Value x = x + 1 Next rng QueryArry1(x) = "GROUP BY DIV_ID) E ON C.DIV_ID = E.DIV_ID " x = x + 1 End If QueryArry1(x) = "WHERE C.EntitySize = '" & Size & "' " QueryArry1(x + 1) = "ORDER BY C." & SortType & " DESC " 'Example Query Results: 'SELECT Top 500 C.* FROM Final03 C INNER JOIN (Select DIV_ID FROM FullLookup WHERE Year = 2008 and State = 'MN' and Type = 'RST44' GROUP BY DIV_ID) E ON C.DIV_ID = E.DIV_ID WHERE C.EntitySize = 'Large' ORDER BY C.TCounts DESC Sheets("Totals").Visible = xlSheetVisible Sheets("Totals").Select Sheets("Totals").PivotTables("PivotTable1").DataBodyRange.Select Sheets("Totals").PivotTableWizard SourceType:=xlExternal, _ SourceData:=QueryArry1, _ Connection:=Array( _ Array("ODBC;DSN=MS Access Database;DBQ=" & DBDir & "\" & DBName & ";"), _ Array("DefaultDir=" & DBDir & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;") _ ) Sheets("Totals").PivotTables("PivotTable2").DataBodyRange.Select Sheets("Totals").PivotTableWizard _ SourceType:=xlPivotTable, _ SourceData:="PivotTable1" Sheets("Totals").Visible = xlSheetHidden End Sub 

благодаря

Ваша проблема кажется точной, описанной здесь:

Ограничение свойства PivotCache.CommandText

Как долго строка, которую вы пытаетесь установить в качестве CommandText?

  • Ошибка визуальной базовой 1004 Excel, метод «значение» объекта «диапазон» не удалось
  • Ошибка времени выполнения 1004:
  • Excel VBA уменьшает время выполнения
  • Ошибка выполнения Runtime 9 после того, как рабочая книга открывает CSV успешно
  • Ошибка во время выполнения Excel VBA 13
  • Ошибка Visual Basic-Runtime 1004
  • Excel VBA Ошибка времени выполнения «424»: объект Обязательный при попытке копирования TextBox
  • excel, но приводит к ошибке времени выполнения «32809», определяемой приложением или объектной ошибкой
  • Ошибка 1004 времени выполнения при копировании / вклеивании ячеек в один и тот же активный лист
  • Проблема с большими объемами данных Excel VBA
  • получение ошибки времени выполнения «1004» путем копирования формулы
  • Давайте будем гением компьютера.