Worksheet.copy()失败_only_工作簿中的一个工作表
我正在运行Access 2010中打开Excel 2010工作簿(“主”)的VBA代码,然后将指定工作表从“主”复制到“客户”工作簿。 这一直工作得很好,直到我得到一个特定的工作表,我得到:
运行时错误“1004”:Worksheet类的复制方法失败
代码行是:
XLMaster.Sheets(SlideRS.Fields(2).Value).Copy _ After:=XLClinic.Sheets(XLClinic.Sheets.Count)
在这个特定的例子中,这是第二张被复制的代码,所以这个代码第一次工作。 这是一个很长的debugging过程的一部分,这行代码对于来自同一个“主”工作簿的十几个其他工作表非常有用。
奇怪的是,当我尝试手动执行时,复制也失败了。 我打开了“Master”,右键单击失败的特定工作表,然后尝试复制它,但是只是没有做到。 我可以手动复制工作簿中的其他工作表就好了。
唯一的区别是我可以识别的是这个特定的工作表上有2个数据透视图。 其他工作表复制OK只有数据,图表(不同types),甚至透视图和常规图表。 这是唯一只有数据透视图而不是“常规”图表的图表。 不知道这是否是原因,但这是唯一可以识别的可能是不同的。
为了更好的上下文,代码行来自这个循环:
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
再一次,这段代码工作得很好,只是这个不想被代码或手工复制的特定工作表。
这是当我尝试在“主”电子表格中手动复制时发生的情况。
在刚刚打开的“Master”工作簿副本中,我打开了代码窗口并在即时窗口中执行了Application.DisplayAlerts = True
(只是为了确保),然后,
复制之前的工作表:
VisitsByDemo
是被复制的工作表
复制设置:
复制后:
Excel 没有生成错误消息。
事实certificate,这个PivotCharts
被破坏了。
当我试图编辑数据透视图的数据源时,这是Excel向我展示的内容:
当我在该页面上重新创buildPivotCharts,然后编辑数据源时,这就是我所看到的:
不知道发生了什么,但是由于我创build了新版本并删除了原件, Worksheet.Copy()
工作得很好。