Worksheet.copy() _only_ 工作簿中的一个工作表失败

Worksheet.copy() fails for _only_ one worksheet in a workbook

我是 运行 VBA Access 2010 的代码,它打开一个 Excel 2010 工作簿(“Master”),然后从“Master”复制指定的 sheets到“客户”工作簿。在我完成一项特定的工作sheet之前,这一直很好用,在那里我得到:

Run-time error '1004': Copy method of Worksheet class failed

代码行是:

XLMaster.Sheets(SlideRS.Fields(2).Value).Copy _
         After:=XLClinic.Sheets(XLClinic.Sheets.Count)

在此特定实例中,这是第 2 个 sheet 被复制,因此代码第一次成功。这是一个漫长调试过程的一部分,这行代码对同一个“大师”工作簿中的十多个其他工作sheet非常有效。

奇怪的是,当我尝试手动复制时也失败了。我打开了“Master”,右键单击了特定的作品sheet那是失败,并试图复制它,但它只是失败了。我可以在工作簿中手动复制其他作品sheet。

我能识别的唯一区别是这个特定的作品sheet 有 2 个数据透视表。复制 OK 的其他作品sheet只有数据、图表(不同类型),甚至还有数据透视图和常规图表。这是唯一具有 个数据透视图而不是 'regular' 个数据透视图的图表。不确定这是否是原因,但这是我唯一能确定的可能不同的地方。

为了更大的上下文,代码行来自这个循环:

  While Not SlideRS.EOF
    If SlideRS.Fields(1) <> SlideRS.Fields(2) Then                        
     'the worksheet depends on something else, copy it first
     'if the depended upon slide is not in the list of UsedSlides, then add it
      If InStr(1, UsedSlides, SlideRS.Fields(2)) = 0 Then                 
        XLMaster.Sheets(SlideRS.Fields(2).Value).Copy _
                 After:=XLClinic.Sheets(XLClinic.Sheets.Count)
        Set NewSheet = XLClinic.Sheets(XLClinic.Sheets.Count)
        UsedSlides = UsedSlides & "," & NewSheet.Name
        UpdateCharts XLMaster.Sheets(SlideRS.Fields(2).Value), NewSheet
        ProcessDataSheet NewSheet, NewXLName
        Set NewSheet = Nothing
      End If
    End If
    SlideRS.MoveNext
  Wend

同样,这段代码工作得很好,只是这个特殊的 sheet 不想被复制,无论是通过代码还是手工。

这是我尝试在“Master”传播中手动复制它时发生的情况sheet。

在我的“主”工作簿的新打开副本中,我打开代码 window 并立即执行 Application.DisplayAlerts = True window(只是为了确定),然后,

复制前的作品sheet:
VisitsByDemo是被复制的sheet

副本设置:

复制后:

没有 由 Excel 生成的错误消息。

原来 PivotCharts 坏了。

当我尝试编辑数据透视图的数据源时,Excel 向我展示了以下内容:

当我在那个页面上重新创建数据透视图,然后编辑数据源时,这是我看到的:

不确定发生了什么,但由于我创建了新版本并删除了原始版本,Worksheet.Copy() 工作正常。