Excel - 从条件格式完整的另一个工作簿中复制

时间:2016-09-28 19:44:39

标签: excel vba excel-vba

我自己已经弄清楚了大部分内容,但是让我感到困惑的部分是能够粘贴条件格式。

我希望能够打开工作簿,运行VBA脚本以打开另一个工作簿,从中复制一个范围,然后将其粘贴到原始工作簿。

我所取得的最大成功是录制宏并实现这一目标: 用原始的目标工作簿打开......

  1. 打开源工作簿
  2. 复制范围A1:X105
  3. 关闭源工作簿
  4. 粘贴到标题为" Temp"的工作表中在目标工作簿中
  5. 问题是源工作簿包含条件格式,如果在粘贴到目标工作簿之前关闭源工作簿,则不会粘贴条件格式。

    因此,我需要找到一种方法来粘贴条件格式的数据,或者我需要能够在关闭源工作簿之前切换回目标工作簿。这是一个需要使用不同的目标工作簿多次运行的进程,因此VBA代码无法引用目标的工作簿文件名。源工作簿将始终具有相同的路径。

    搜索网站时,我只能找到指定两个工作簿路径的解决方案。

    这就是我现在所拥有的:

    Sub CopyData() 
    Application.DisplayAlerts = False 
    Workbooks.Open filename:="source.xlsx", _ 
    UpdateLinks:=3 
    Range("A1:X105").Select 
    Selection.Copy 
    ActiveWindow.Close 
    Sheets("Temp").Select 
    ActiveSheet.Paste 
    Application.DisplayAlerts = True 
    End Sub
    

    我想我需要实现的是将目标工作簿声明为变量。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以将工作簿调暗,然后复制并粘贴。完成后,您可以使用该变量,关闭工作簿。代码如下:

Sub CopyData()
    Application.DisplayAlerts = False
    Dim wbSource As Workbook
    Set wbSource = Workbooks.Open(Filename:="source.xlsx", UpdateLinks:=3)
    wbSource.Sheets(1).Range("A1:X105").Copy
    ThisWorkbook.ActiveSheet.Selection.Paste
    wbSource.Close
    Application.DisplayAlerts = True
End Sub

我不知道你如何确定你在目标工作簿上粘贴的范围,但是会将其留给另一个问题。 Emily Alden的回答我认为不会起作用,因为你无法从关闭的来源复制。剪贴板与Excel的行为与其他应用程序的行为不同。

答案 1 :(得分:0)

基于新信息:

Sub CopyData() 
Application.DisplayAlerts = False 
Workbooks.Open filename:="source.xlsx", _ 
UpdateLinks:=3 
Range("A1:X105").Select 
Selection.Copy 
ActiveWindow.Close 
Sheets("Temp").Select 
ActiveSheet.PasteSpecial xlPasteFormats
Application.DisplayAlerts = True 
End Sub

上一个: 从:Copy conditional formatting from one cell to another using VBA?

Sub test()
     Sheets("B").[B1].Copy: Sheets("A").[A1:A10].PasteSpecial xlPasteFormats
End Sub

是否会粘贴条件格式的代码。

您需要做的主要是更改顺序:

  1. 使用提示输入用户来选择文件

  2. 从源中复制范围

  3. 将范围粘贴到原始
  4. 关闭来源