Vba 我能';t将透视表格式粘贴到另一页
尝试将Excel上的数据透视表从一个页面复制并粘贴到另一个页面。 代码可以工作,但不会粘贴格式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
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