Vba 我能';t将透视表格式粘贴到另一页

Vba 我能';t将透视表格式粘贴到另一页,vba,format,pivot-table,copy-paste,Vba,Format,Pivot Table,Copy Paste,尝试将Excel上的数据透视表从一个页面复制并粘贴到另一个页面。 代码可以工作,但不会粘贴格式 Sub TestPivotPaste() Dim wb As Workbook Dim sh As Worksheet Dim sh1 As Worksheet Dim copyrange As Range Set wb = ActiveWorkbook Set sh = wb.Worksheets(8) Set copyrange = sh.Range("A1:Z50") Set sh1 = wb

尝试将Excel上的数据透视表从一个页面复制并粘贴到另一个页面。 代码可以工作,但不会粘贴格式

Sub TestPivotPaste()
Dim wb As Workbook
Dim sh As Worksheet
Dim sh1 As Worksheet
Dim copyrange As Range

Set wb = ActiveWorkbook
Set sh = wb.Worksheets(8)
Set copyrange = sh.Range("A1:Z50")
Set sh1 = wb.Worksheets(9)


copyrange.Copy
sh1.Range("B50").PasteSpecial Paste:=xlPasteValues
sh1.Range("B50").PasteSpecial Paste:=xlPasteFormats
sh1.Range("B50").PasteSpecial Paste:=xlPasteColumnWidths

End Sub
我试着在同一页上做

Sub TestPivotPaste()
Dim wb As Workbook
Dim sh As Worksheet
Dim copyrange As Range
Set wb = ActiveWorkbook
Set sh = wb.Worksheets(8)
Set copyrange = sh.Range("A1:Z50")
copyrange.Copy
sh.Range("B50").PasteSpecial Paste:=xlPasteValues
sh.Range("B50").PasteSpecial Paste:=xlPasteFormats
sh.Range("B50").PasteSpecial Paste:=xlPasteColumnWidths
End Sub
它仍然被复制,没有格式,我得到 运行时错误1004:范围类的特殊方法失败,错误行为

sh.Range("B50").PasteSpecial Paste:=xlPasteFormats

我无法通过查看此网站上类似的答案来找出问题所在

尝试复制整个表范围,如下所示(您可能需要更改透视表所属的范围):


注释掉错误恢复时的
,然后重新运行。你是否收到了错误信息?也考虑使用一个更一致的缩进。@ BigBe:是的,我得到了运行时错误9 -下标,你从哪条线得到那个错误?请把你的问题与错误描述和抛出它的那一行联系起来,谢谢!如果您添加一个新工作簿,它可能不会有一个与原始
sh
同名的工作表,对吗?使用Pivot Table object是我已经探索过的解决方案,但有趣的是,如果我使用TableRange2(因为我需要复制和粘贴Pivot的过滤器),它不会粘贴格式。它只适用于TableRange1。只有当我可以粘贴过滤器时,我才能使用透视表对象。因此,您要做的只是复制透视表及其所有功能和格式?我不需要功能,只需要值和格式。如果我无法复制包含值和格式的整个页面,那么唯一的可能就是复制并粘贴表中所有透视表的值和格式。
Sub TestPivotPaste()

Dim wb As Workbook
Dim sh As Worksheet
Dim sh1 As Worksheet
Dim copyrange As Range

Set wb = ActiveWorkbook
Set sh = wb.Worksheets(8)
Set pt = sh.Range("A3").PivotTable
Set sh1 = wb.Worksheets(9)
Set copyrange = pt.TableRange1

copyrange.Copy
sh1.Range("B50").PasteSpecial Paste:=xlPasteValues
sh1.Range("B50").PasteSpecial Paste:=xlPasteFormats
sh1.Range("B50").PasteSpecial Paste:=xlPasteColumnWidths

End Sub