Excel 2003中的Excel宏运行时错误428

时间:2010-06-17 14:20:56

标签: excel excel-vba excel-2007 vba

我创建了一个xlt excel模板,它在兼容模式下在Excel 2007中运行良好,并且在兼容性检查时没有显示错误。该模板运行许多宏,创建数据透视表和图表。

当同事尝试在excel 2003上运行相同的xlt时,会得到运行时错误428(对象不支持此属性或方法)。

此时运行时错误失败;

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "raw!R1C1:R65536C37", Version:=xlPivotTableVersion10).CreatePivotTable _
    TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion10

任何帮助都将不胜感激。

这是完整的宏;

    Sub Auto_Open()
'
' ImportData Macro
' Macro to import data, Data must be in your local D: Drive and named raw.csv
'

'
    Sheets("raw").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;d:\raw.csv", Destination:=Range _
        ("$A$1"))
        .Name = "raw_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
'
' AddMonthColumn Macro
'
'
    Sheets("raw").Select
    Range("AK1").Select
    ActiveCell.FormulaR1C1 = "Month"
    Range("AK2").FormulaR1C1 = "=DATE(YEAR(RC[-36]),MONTH(RC[-36]),1)"
    LastRow = ActiveSheet.UsedRange.Rows.Count
    Range("AK2").AutoFill Destination:=Range("AK2:AK" & LastRow)
    Columns("AK:AK").EntireColumn.AutoFit
    Columns("AK:AK").Select
    Selection.NumberFormat = "mmmm"
    With Selection
        .HorizontalAlignment = xlCenter
    End With
    Columns("AK:AK").EntireColumn.AutoFit
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'
' Add Report Information [Text]
'
    Sheets("Frontpage").Select
    Range("A2:N2").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Service Activity Report"
    With Selection.Font
        .Size = 20
    End With
    Range("A3:N3").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = InputBox("Customer Name")
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
    Range("A4:N4").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = InputBox("Date Range dd/mm/yyyy - dd/mm/yyyy")
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
'
' IncidentsbyPriority Macro
'

'
    Sheets("Frontpage").Select
    Range("A7").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "raw!R1C1:R65536C37", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Frontpage").Select
    Cells(7, 1).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("Frontpage!$A$7:$H$22")
    ActiveChart.ChartType = xlColumnClustered
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Priority")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
        "PivotTable2").PivotFields("Case ID"), "Count of Case ID", xlCount
    ActiveChart.Parent.Name = "IncidentsbyPriority"
    ActiveChart.ChartTitle.Text = "Incidents by Priority"
    Dim RngToCover As Range
    Dim ChtOb As ChartObject
    Set RngToCover = ActiveSheet.Range("D7:L16")
    Set ChtOb = ActiveSheet.ChartObjects("IncidentsbyPriority")
    ChtOb.Height = RngToCover.Height ' resize
    ChtOb.Width = RngToCover.Width ' resize
    ChtOb.Top = RngToCover.Top ' reposition
    ChtOb.Left = RngToCover.Left ' reposition
'
' IncidentbyMonth Macro
'

'
    Sheets("Frontpage").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "raw!R1C1:R65536C37", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Frontpage!R18C1", TableName:="PivotTable4", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Frontpage").Select
    Cells(18, 1).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("Frontpage!$A$18:$H$38")
    ActiveChart.ChartType = xlColumnClustered
    With ActiveSheet.PivotTables("PivotTable4").PivotFields("Month")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
        "PivotTable4").PivotFields("Case ID"), "Count of Case ID", xlCount
    ActiveChart.Parent.Name = "IncidentbyMonth"
    ActiveChart.ChartTitle.Text = "Incidents by Month"
    Dim RngToCover2 As Range
    Dim ChtOb2 As ChartObject
    Set RngToCover2 = ActiveSheet.Range("D18:L30")
    Set ChtOb2 = ActiveSheet.ChartObjects("IncidentbyMonth")
    ChtOb2.Height = RngToCover2.Height ' resize
    ChtOb2.Width = RngToCover2.Width ' resize
    ChtOb2.Top = RngToCover2.Top ' reposition
    ChtOb2.Left = RngToCover2.Left ' reposition

'
' IncidentbyCategory Macro
'

'
    Sheets("Frontpage").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "raw!R1C1:R65536C37", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Frontpage!R38C1", TableName:="PivotTable6", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Frontpage").Select
    Cells(38, 1).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("Frontpage!$A$38:$H$119")
    ActiveChart.ChartType = xlColumnClustered
    With ActiveSheet.PivotTables("PivotTable6").PivotFields("Category 2")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable6").PivotFields("Category 3")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable6").AddDataField ActiveSheet.PivotTables( _
        "PivotTable6").PivotFields("Case ID"), "Count of Case ID", xlCount
    ActiveChart.Parent.Name = "IncidentbyCategory"
    ActiveChart.ChartTitle.Text = "Incidents by Category"
    Dim RngToCover3 As Range
    Dim ChtOb3 As ChartObject
    Set RngToCover3 = ActiveSheet.Range("D38:L56")
    Set ChtOb3 = ActiveSheet.ChartObjects("IncidentbyCategory")
    ChtOb3.Height = RngToCover3.Height ' resize
    ChtOb3.Width = RngToCover3.Width ' resize
    ChtOb3.Top = RngToCover3.Top ' reposition
    ChtOb3.Left = RngToCover3.Left ' reposition
'
' IncidentsbySiteandPriority Macro
'

'
    Sheets("Frontpage").Select
    Range("A71").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "raw!R1C1:R65536C37", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Frontpage!R71C1", TableName:="PivotTable3", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Frontpage").Select
    Cells(71, 1).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("Frontpage!$A$71:$H$90")
    ActiveChart.ChartType = xlColumnClustered
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Site Name")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Priority")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
        "PivotTable3").PivotFields("Case ID"), "Count of Case ID", xlCount
    ActiveChart.Parent.Name = "IncidentbySiteandPriority"
'    ActiveChart.ChartTitle.Text = "Incidents by Site and Priority"
    Dim RngToCover4 As Range
    Dim ChtOb4 As ChartObject
    Set RngToCover4 = ActiveSheet.Range("H71:O91")
    Set ChtOb4 = ActiveSheet.ChartObjects("IncidentbySiteandPriority")
    ChtOb4.Height = RngToCover4.Height ' resize
    ChtOb4.Width = RngToCover4.Width ' resize
    ChtOb4.Top = RngToCover4.Top ' reposition
    ChtOb4.Left = RngToCover4.Left ' reposition
    Columns("A:G").Select
    Range("A52").Activate
    Columns("A:G").EntireColumn.AutoFit

End Sub

1 个答案:

答案 0 :(得分:0)

尝试使用ActiveWorkbook.PivotCaches.Add()代替ActiveWorkbook.PivotCaches.Create()