Excel 运行时错误13-更改数据透视缓存时

Excel 运行时错误13-更改数据透视缓存时,excel,syntax-error,datasource,pivot-table,vba,Excel,Syntax Error,Datasource,Pivot Table,Vba,我是这个论坛的新手。我想问问是否有人能帮我解决这个问题。我编写了一个宏,用于更改所有数据透视表源,如果pt的名称以1结尾,它将应用另一个xlsx文件中的一个源,如果是2,它将提供另一个文件中的另一个源。在宏操作期间,我将两本书都打开,以确保它不会在那一侧断裂。但在“case2”中,它总是抛出运行时错误13:type missmatch。有人能帮我修一下吗。谢谢 Sub origen_tablas_fwb() Dim hoja As Worksheet Dim pt As PivotTable

我是这个论坛的新手。我想问问是否有人能帮我解决这个问题。我编写了一个宏,用于更改所有数据透视表源,如果pt的名称以1结尾,它将应用另一个xlsx文件中的一个源,如果是2,它将提供另一个文件中的另一个源。在宏操作期间,我将两本书都打开,以确保它不会在那一侧断裂。但在“case2”中,它总是抛出运行时错误13:type missmatch。有人能帮我修一下吗。谢谢

Sub origen_tablas_fwb()

Dim hoja As Worksheet
Dim pt As PivotTable
Dim a1, a2, j As Long
Dim libro1, libro2 As String

a2 = Workbooks("Global ETdlc.xlsx").Worksheets("Comando").Range("A7").Value
a1 = a2 - 1
Windows("Global ETdlc.xlsx").Activate
Sheets("Comando").Activate
j = Sheets("Comando").Range("N1", Range("N1").End(xlDown)).Rows.Count
libro2 = Workbooks("Global ETdlc.xlsx").Worksheets("Comando").Range("B8").Value
For i = 1 To j
    If Cells(i, 14).Value = libro2 Then
    libro1 = Cells(i, 15).Value
    End If
Next i

'Workbooks.Open Filename:="C:\Respaldo Reservas\FEEDS+FWB\" & a1 & "\" & libro1
'Workbooks.Open Filename:="C:\Respaldo Reservas\FEEDS+FWB\" & a2 & "\" & libro2

'Workbooks.Open Filename:="C:\Informes\Forward Bookings"
Windows("Forward Bookings").Activate
For Each hoja In ActiveWorkbook.Worksheets
    For Each pt In Worksheets(hoja.Name).PivotTables
        Select Case Right(pt.Name, 1)
        Case 1
        'cambiar cache año anterior
        ActiveSheet.pt.ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=Workbooks(libro1).Sheets("Input").Range("A1").CurrentRegion)
        Case 2
        'cambiar cache año actual
        ActiveSheet.pt.ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=Workbooks(libro2).Sheets("Input").Range("A1").CurrentRegion)
        End Select
    Next pt
Next hoja
Windows(libro1).Close
Windows(libro2).Close
End Sub

代码实际上正在尝试为每个数据透视表创建一个数据透视缓存

我建议每个外部工作簿只创建一个
PivotCache
,然后更改每个
PivotCache
对应的
PivotCache

将更改Pivot缓存的部件替换为以下代码:

Dim Pch1 As PivotCache, Pch2 As PivotCache

With Windows("Forward Bookings")
    With .PivotCaches
        Set Pch1 = .Create(SourceType:=xlDatabase, _
            SourceData:=Workbooks(libro1).Sheets("Input").Range("A1").CurrentRegion)
        Set Pch1 = .Create(SourceType:=xlDatabase, _
            SourceData:=Workbooks(libro2).Sheets("Input").Range("A1").CurrentRegion)
    End With
    For Each hoja In .Worksheets
        For Each pt In hoja.PivotTables
            Select Case Right(pt.Name, 1)
            Case 1
                'cambiar cache año anterior
                pt.ChangePivotCache (Pch1)
            Case 2
                'cambiar cache año actual
                pt.ChangePivotCache (Pch2)
            End Select

Next: Next: End With