Excel vba从剪贴板粘贴到另一个工作表的值

时间:2016-01-27 08:50:47

标签: excel vba excel-vba paste

我有一个我需要粘贴数据的工作簿。 我想要实现的目标:

  1. 我希望将数据粘贴到工作簿中
  2. 我希望将数据粘贴到工作簿中的工作表不活动
  3. 用户激活已打开的另一个工作簿,选择整个工作表并将其复制到剪贴板。
  4. 用户返回工作簿数据将被粘贴到并运行一个宏,该数据将该数据粘贴到具有预定义工作表名称的另一个空工作表中。
  5. 粘贴必须仅粘贴值,没有格式,没有注释,形状,没有合并的单元格。只有值。
  6. 我尝试了很多组合.Paste Destination [...]等等。

    今天使用的是:

    Dim wb As Workbook
    Dim wsPT As Worksheet
    Dim wsQD As Worksheet
    
    Set wb = ActiveWorkbook
    Set wsPT = wb.Sheets("PasteTemplate")
    Set wsQD = wb.Sheets("QuoteData")
    
    wsPT.Cells.Clear
    wsPT.Range("A1").PasteSpecial xlPasteValues
    

2 个答案:

答案 0 :(得分:2)

它失败的原因是因为剪贴板不包含任何要粘贴的内容,因为这行:

wsPT.Cells.Clear

清除单元格时,还要清除先前发出的复制命令。同样,如果您输入或修改另一个单元格中的信息,或者即使您只是输入单元格,也会清除copy-command。

我没有为您的特定工作流程提供完美的解决方法,但是如果您愿意修改步骤4以便可以从任何工作表运行宏(具体而言,用户必须从同一工作表运行命令)他们正在从菜单中复制或通过将宏放在工具栏上来复制,这段代码应该可以工作:

Dim wb As Workbook
Dim wsPT As Worksheet
Dim wsQD As Worksheet
Dim pRng As Range

Set wb = ActiveWorkbook
Set wsPT = wb.Sheets("PasteTemplate")
Set wsQD = wb.Sheets("QuoteData")
Set pRng = Selection                   <~~ Store the range we want to copy

wsPT.Cells.Clear                       <~~ Clear the contents of the worksheet we are pasting to
pRng.Copy                              <~~ Copy the range
wsPT.Range("A1").PasteSpecial xlPasteValues

选择所需范围后,从正在复制数据的工作表中运行宏。

答案 1 :(得分:0)

你试过吗??

Range("A1").Copy Destination:=Workbooks("QuoteDate").Sheets("PasteTemplate").Range("A1")

这将从引用日期表和粘贴模板表中的粘贴中复制,如果您想要相反的话,请交换这些名称。