2012-05-02 43 views
3

我无法将透视表格式复制到新工作表。基本上我想要做的是这样的:复制数据透视表格式

someRange.Copy 
someOtherRange.pasteSpecial xlPasteValues 
someOtherRange.pasteSpecial xlPasteFormats 

基本上,我想当前视图上的数据透视表的精确副本在新的工作表,但我只想值和格式(而不是连接再到数据透视表)。手动执行此过程会产生正确的结果,但出于某种原因,当我通过vba使用相同的方法时,格式不会复制...想法?

更新: 精确的要求代码:

Application.CutCopyMode = False 
pivotSheet.Range(pivotSheet.usedRange.Cells(1, 2), pivotSheet.Cells(pivotSheet.usedRange.Rows.Count, pivotSheet.Columns.Count)).Copy 
updatesSheet.Range(updatesSheet.Cells(1, 1), updatesSheet.Cells(pivotSheet.usedRange.Rows.Count, pivotSheet.usedRange.Columns.Count)).PasteSpecial xlPasteValues 
updatesSheet.Range(updatesSheet.Cells(1, 1), updatesSheet.Cells(pivotSheet.usedRange.Rows.Count, pivotSheet.usedRange.Columns.Count)).PasteSpecial xlPasteFormats 
Application.CutCopyMode = False 
+0

'pastSpecial'是不是你应该如何拼写 – Marc

+0

真实,虽然这仅仅是一个错字...不实际的问题。不过谢谢。 – Billy

+0

嗨,我自己仍然有同样的问题。任何帮助,将不胜感激 –

回答

2

久经考验

Option Explicit 

Sub Sample() 
    With Sheets("Sheet1") 
     .Range("H1:I6").Copy 

     With .Range("M7") 
      .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 

      .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
     End With 
    End With 
End Sub 

快照

enter image description here

+0

谢谢,Siddharth。虽然这是我尝试过的相同解决方案,出于某种原因,我没有获得格式。希望我知道为什么...想想我会用艰难的方式将其格式化为代码...... – Billy

+0

向我们展示您正在使用的“精确”代码。 –

+0

看到更新上面...虐待接受答案,我同意这是它应该*。我只是说它实际上并没有在我的机器上执行此操作... – Billy

0

之前复制和粘贴手动,开始录制宏。完成后,停止录制并检查录制的代码。你会得到一堆额外的东西,你可以删除,但你也会得到正确的语法做你想做的事情。

+0

已经尝试过 - 这就是我想出了上述代码。当我手工(并记录)时,结果是正确的。但是当我真正运行宏时,只有值被复制而不是格式。谢谢。 – Billy

+0

@比利:我只是试了一下,它的工作:) –

+0

哈哈,我敢肯定它在你的机器上。我只是说它不在我的。你只需要相信我; – Billy