2013-07-15 41 views
1

有点背景; 我必须在上周的星期一为我的工作运行每周报告,但是我需要整理材料,我做了一个数据透视表,我必须为多个工作表执行此操作。不过,我决定创建一个宏来完成这个冗余任务。现在创建它我似乎得到这个错误消息“无效的过程或参数”。我不能让它在我的新工作表打开,叔他是我的代码>>VBA;无效的程序或参数错误

Sub weekmaster() 
' 
' weekmaster Macro 
' Macro for the week 
' 
' Keyboard Shortcut: Ctrl+t 
' 
    Cells.Select 
    Sheets.Add 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "weekmaster!R1C1:R1048576C62", Version:=xlPivotTableVersion12). _ 
     CreatePivotTable TableDestination:="Sheet9!R3C1", TableName:="PivotTable1" _ 
     , DefaultVersion:=xlPivotTableVersion12 
    Sheets("Sheet9").Select 
    Cells(3, 1).Select 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Order ID") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
+0

你如果TableDestination无效,可能会发生该错误。 (即不存在具有该名称的表格)。 – Stepan1010

回答

0

,如果你跑的比宏观更一旦你会得到一个错误,或者如果Sheet9已经存在(因为宏试图使用相同的名称在同一张纸上创建相同的数据透视表)。如果我假设你在每次你去你的数据表和运行宏时产生的数据透视表在的工作表,您可以用下面的代码更新:

Dim myRange as Range 
dim myNewSheet as Worksheet 

' Stores all continuous data on the sheet in the myRange variable 
Set myRange = Range("A1").CurrentRegion 

' Adds a new sheet and stores it in the myNewSheet variable 
Set myNewSheet = Sheets.Add 

' Use the variables to create the new pivot table 
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    myRange, Version:=xlPivotTableVersion12).CreatePivotTable _ 
    TableDestination:=myNewSheet.Cells(3, 1), DefaultVersion _ 
    :=xlPivotTableVersion12 

' Select your Order ID field 
With myNewSheet.PivotTables(1).PivotFields("Order ID") 
    .Orientation = xlRowField 
    .Position = 1 
End With 
1

看来你缺少一个参数。 CreatePivotTable采用下列参数:

expression.CreatePivotTable(TableDestination,表名,READDATA,DefaultVersion)

  1. TableDestination Variant类型,必需在数据透视表的目标范围(在该范围的左上角细胞工作表所在的数据透视表报告将被放置)。目标范围必须位于包含由expression指定的PivotCache对象的工作簿中的工作表上。
  2. TableName可选Variant新的数据透视表报告的名称。
  3. ReadData可选Variant正确创建包含外部数据库中所有记录的数据透视表缓存;这个缓存可能非常大。 False,以便在实际读取数据之前将某些字段设置为基于服务器的页面字段。
  4. DefaultVersion可选Variant数据透视表的默认版本。

随后,您可能需要在TableName和DefaultVersion之间添加'true'。

干杯,LC

相关问题