我自己已经弄清楚了大部分内容,但是让我感到困惑的部分是能够粘贴条件格式。
我希望能够打开工作簿,运行VBA脚本以打开另一个工作簿,从中复制一个范围,然后将其粘贴到原始工作簿。
我所取得的最大成功是录制宏并实现这一目标: 用原始的目标工作簿打开......
问题是源工作簿包含条件格式,如果在粘贴到目标工作簿之前关闭源工作簿,则不会粘贴条件格式。
因此,我需要找到一种方法来粘贴条件格式的数据,或者我需要能够在关闭源工作簿之前切换回目标工作簿。这是一个需要使用不同的目标工作簿多次运行的进程,因此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
我想我需要实现的是将目标工作簿声明为变量。有人可以帮忙吗?
答案 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
是否会粘贴条件格式的代码。
您需要做的主要是更改顺序:
使用提示输入用户来选择文件
从源中复制范围