2017-04-08 277 views
0

我試圖將一組數據從工作簿複製到另一個工作簿,比方說我要將數據從書A複製到書B.首先,我去Book A複製列表,然後轉到Book B在copData宏下面運行(我想在返回到Book B中的前一張之前將數據粘貼到新的工作表上)。粘貼另一個工作簿中的數據excel vba,錯誤:Worksheet類的粘貼方法失敗

Sub copydata() 

Dim lstviewpg As String 
lstviewpg = ActiveSheet.Name 
Sheets.Add After:=Sheets(Sheets.Count) 
Sheets(Sheets.Count).Name = "newsheet" 
Sheets("newsheet").Activate 
ActiveSheet.Paste 
Sheets(lstviewpg).Activate 

End Sub 

由於Worksheet類的Paste方法失敗,導致宏在第6行失敗。任何人有任何想法如何解決它?

ActiveSheet.Paste 

回答

0

工作表類的粘貼方法失敗,如果沒有什麼在剪貼板即剪貼板誤差也將產生是空的。 因此,要確認剪貼板不是空的,請右鍵單擊表單上的任何單元格,如果粘貼呈灰色,表示剪貼板爲空。

+0

感謝sktneer,真正的剪貼板是空的,因爲我從視圖宏窗口運行它。一旦我點擊查看宏,我去書A檢查複製區域,該區域已被關閉。代碼使用快捷方式或Visual Basic窗口順利運行。 – Amos

+0

這是問題,否則你的代碼很好。 :)如果這有幫助,請花點時間接受解決方案,將您的問題標記爲已解決。 – sktneer

0

你必須使用PasteSpecial()

而且可以簡化一點:

Sub copydata() 

    Dim lstviewpg As String 
    lstviewpg = ActiveSheet.Name 

    With Sheets.Add(After:=Sheets(Sheets.Count)) '<--| add a new sheet and reference it 
     .Name = "newsheet" '<--| set the name of referenced sheet 
     .PasteSpecial '<--| paste data 
    End With 
    Sheets(lstviewpg).Activate 

End Sub 
+0

宏由於我從視圖宏窗口運行它失敗。我根據您的建議修改了我的編碼。無論如何,感謝編碼整理者。 – Amos