【发布时间】:2016-09-28 19:44:38
【问题描述】:
我自己已经解决了大部分问题,但让我束手无策的部分是能够粘贴条件格式。
我希望能够打开一个工作簿,运行 VBA 脚本来打开另一个工作簿,从中复制一个范围,然后将其粘贴到原始工作簿中。
我取得的最大成功是录制宏并实现了这一点: 打开原始的目标工作簿...
- 打开源工作簿
- 复制范围 A1:X105
- 关闭源工作簿
- 粘贴到目标工作簿中标题为“Temp”的工作表中
问题在于源工作簿包含条件格式,如果在粘贴到目标工作簿之前关闭源工作簿,则不会粘贴条件格式。
因此,要么我需要找到一种方法以条件格式粘贴数据,要么我需要能够在关闭源工作簿之前切换回目标工作簿。这是一个需要使用不同的目标工作簿多次运行的过程,因此 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
我想我需要实现的是将目标工作簿声明为变量。有人可以帮忙吗?
【问题讨论】:
-
所以听起来你的脚本必须在关闭第一个工作簿之前从源工作簿粘贴到目标工作簿。如果将其设置为工作簿变量,即使不指定工作簿名称,这也不是问题。请提供您目前开发的代码以获得进一步的帮助。
-
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 -
对不起。我不知道如何在评论中做预先格式化的文本。
-
@Robby 您必须在问题中输入代码。除了小的单线之外,任何东西都不能在 cmets 中渲染。
-
因此 VBA 代码无法引用目标的工作簿文件名。 可能不是,但它可以 绝对可以打开 @987654323 @ 提示并以编程方式打开有问题的工作簿... :)