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()
工作正常。
我是 运行 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()
工作正常。