2012-08-07 3 views
3

Excel 2010에서 실행하려고하는 Excel 2003 .xls 파일이 있습니다. 먼저이 파일을 .xlsm 파일로 저장하고 신뢰할 수있는 디렉터리로 보안 센터에 추가했습니다. 오류 코드가 표시됩니다 (아래 화살표로 표시). 참고 : PivotTableVersion을 12로 변경하면 여전히 동일한 오류가 발생합니다. 코드는 다음과 같습니다.PivotCaches.add 오류 5 - 2003 - 2010 매크로

Sub Create_pivot() 
     Wbname = ActiveWorkbook.Name 
    ' Insert columns to make room for pivot table 
     Columns("A:I").Select 
     Selection.Insert Shift:=xlToRight 
     myData = Sheets(ActiveSheet.Name).[J1].CurrentRegion.Address 
     mySheet = ActiveSheet.Name & "!" 
     tableDest = "[" & Wbname & "]" & mySheet & "R1C1" 
>>>> ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
      mySheet & myData).CreatePivotTable TableDestination:=tableDest, TableName _ 
      :="RTP_alerts", DefaultVersion:=xlPivotTableVersion10 
     With ActiveSheet.PivotTables("RTP_alerts").PivotFields("Application") 
      .Orientation = xlRowField 
      .Position = 1 
     End With 
     With ActiveSheet.PivotTables("RTP_alerts").PivotFields("Object") 
      .Orientation = xlRowField 
      .Position = 2 
     End With 
     ActiveSheet.PivotTables("RTP_alerts").AddDataField ActiveSheet.PivotTables(_ 
      "RTP_alerts").PivotFields("Alerts"), "Count of Alerts", xlCount 
     ActiveWorkbook.ShowPivotTableFieldList = False 
     Application.CommandBars("PivotTable").Visible = False 

     Columns("G:I").Select 
     Selection.Delete Shift:=xlToLeft 
     Range("D2").Select 
     ActiveCell.FormulaR1C1 = "Owner" 
     Range("E2").Select 
     ActiveCell.FormulaR1C1 = "Problem Ticket" 
     Columns("E:E").ColumnWidth = 13 
     Range("F2").Select 
     ActiveCell.FormulaR1C1 = "Comments" 
     Columns("F:F").ColumnWidth = 48 
    End Sub 

답변

1

그들은 PivotCaches의 개체 모델을 변경했습니다.

Dim pc As PivotCache 
Dim pt As PivotTable 
Dim lVBAVer As Long 

lVBAVer = CLng(Application.VBE.Version) 

#If lVBAVer <= 6 Then 
    Set pc = ActiveWorkbook.PivotCaches.Add(xlDatabase, Sheet1.UsedRange) 
#Else 
    Set pc = ActiveWorkbook.PivotCaches.create(xldtatabase, Sheet1.UsedRange) 
#End If 

Set pt = pc.CreatePivotTable(Sheet2.Range("A3")) 
: 당신이 2,007에서 2,010 사이에 필요한 방법 (대신 버전 6의 사용 VBA 버전 7)

PivotCaches.Create 

당신은 다음과 같이 모두에서 작동하는 코드를 작성하는 조건부 컴파일을 사용할 수있다

If/EndIf 키워드 앞에 오는 해시는 해당 버전에 존재하지 않지만 여전히 실행되는 메소드를 사용할 때 컴파일 오류가 발생하지 않는다는 것을 의미합니다.

0

나는 최근에 나는 많은 .xls 파일이 매크로를 포함와 비슷한 문제가 있었다 엑셀 2003 에서 엑셀 2010으로 업그레이드 : 다음과 같은 지침에 일반 오류 [-2147417848 (80010108)] :

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
    NomeFoglioDett & "!R1C1:R" & UltimaRiga & "C18").CreatePivotTable TableDestination:="", _ 
    TableName:="Tabella_pivot1", DefaultVersion:=xlPivotTableVersion10 

을 나는 다양한 작업을 시도했다. xlsm 또는 .xls (97-2003)로 저장하고, PivotCaches.Add에서 PivotCaches.Add로 수정하고, DefaultVersion을 xlPivotTablesVersion10에서 xlPivotTablesVersion12 또는 14로 변경한다. 아무 것도 작동하지 않는다. 결국 피벗 테이블을 생성 할 때 위의 내용 일 수 있다는 것을 깨달았습니다. 작동하지 않았다 다음의 지침 :

여기
Dim Anno As String 
Dim Percorso As String 
Dim NomeFileOut As String 
Dim NomeFoglioDett As String 
Dim UltimaRiga As String 

Anno = "2013" 
Percorso = ActiveWorkbook.Path & "\" 
NomeFileOut = "MyName1." & Anno & ".0m.1.BIn.xls" 
NomeFoglioDett = " MyName2." & Anno & ".0m.1.Tp2" 
'. 
'. 
'. 
'================= Creazione Tabella Pivot 
'Riapro il Batch Input in formato Excel - foglio dei tipi 2 
Workbooks.Open Filename:=Percorso & NomeFileOut 
'Cerco l'ultima riga piena 
UltimaRiga = Range("A60000").End(xlUp).Row 
'Creo la tabella Pivot 
'totali Importi segnati per Descrizioni ridotte 
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
    NomeFoglioDett & "!R1C1:R" & UltimaRiga & "C18").CreatePivotTable TableDestination:="", _ 
    TableName:="Tabella_pivot1", DefaultVersion:=xlPivotTableVersion10 
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) 
ActiveSheet.Cells(3, 1).Select 
With ActiveSheet.PivotTables("Tabella_pivot1").PivotFields("Mese") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
With . . . 

같은 지침을 변경하여 - 시트 (2) ALL 기타 사항 서보 -OFF - .XLS 및 .xlsm에서 저장 한 파일에 대한 문제를 해결 :

'================= Creazione Tabella Pivot 
'Riapro il Batch Input in formato Excel - foglio dei tipi 2 
Workbooks.Open Filename:=Percorso & NomeFileOut 
    Sheets(2).Select 
'Cerco l'ultima riga piena 
UltimaRiga = Range("A60000").End(xlUp).Row 
'Creo la tabella Pivot 
'totali Importi segnati per Descrizioni ridotte 
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
    NomeFoglioDett & "!R1C1:R" & UltimaRiga & "C18").CreatePivotTable TableDestination:="", _ 
    TableName:="Tabella_pivot1", DefaultVersion:=xlPivotTableVersion10 
ActiveSheet.PivotTableWizard . . . 

Excel 2010은 이전 방식으로 피벗 테이블 생성을 허용하지만 .xls 파일을 열 때 정확성이 더 필요합니다. 어떤 시트를 읽어야하는지 알고 싶어합니다.

관련 문제