【发布时间】:2016-11-23 11:29:56
【问题描述】:
我需要编写一个宏脚本,该脚本将从一个 xml 工作簿复制数据并将值粘贴到另一个工作簿。我编写了下面的宏,它工作正常,但我需要每周为几个不同的文档运行它,所以这意味着我必须为每次运行替换文档名称。
这是我目前所拥有的:
Sub copying()
''''''Section 1''''''
Workbooks("Results_2561").Activate 'workbook i'm copying from
Range("B27:B41").Select
Selection.Copy
Workbooks("Overall_Results").Activate 'workbook i'm pasting to
Range("G2").PasteSpecial
''''''Section 2''''''
Workbooks("Results_2561").Activate
Range("C27:C41").Select
Selection.Copy
Workbooks("Overall_Results").Activate
Range("C2").PasteSpecial
''''''Section 3''''''
Workbooks("Results_2561").Activate
Range("I28:I40").Select
Selection.Copy
Workbooks("Overall_Results").Activate
Range("G17").PasteSpecial
''''''Section 4''''''
Workbooks("Results_2561").Activate
Range("J28:J40").Select
Selection.Copy
Workbooks("Overall_Results").Activate
Range("C17").PasteSpecial
End Sub
... 这只是剧本的一半。有没有办法我可以在开始时声明一个变量并将其设置为工作簿文件路径,这样我就可以调用它而不是一遍又一遍地键入和重新键入它? 最好不要使用类似的东西
Dim book1 as Workbook
Set book1 = Workbooks.Open("C://Results_2561.xlsm")
..因为这会在我运行脚本时不断打开和关闭文档。
谢谢
【问题讨论】:
-
类似这样的:使用
String、Dim StrPath as String、StrPath = "C://Results_2561.xlsm"和Set book1 = Workbooks.Open(StrPath ) -
在宏的开头打开一个文件对话框怎么样?
-
最好避免使用
Activate、Selection和Select。您可以在代码开头有一个 BIGWith Workbooks("Results_2561"),然后复制 use.Range("B27:B41").Copy到 PasteSpecialWorkbooks("Overall_Results").Range("G2").PasteSpecial xlValues(如果您使用的是PasteSpecial,则需要另一个参数 -
或者定义一个输入框变量,并在输入框中键入它将来自的文件的名称。然后在打开文件时使用该存储变量