Excel VBA - 使用来自不同工作簿

时间:2016-01-28 18:45:26

标签: excel vba excel-vba

我想创建一个“驱动程序”工作簿,有人可以更新将应用于另一个工作簿的值。 “macros.xlsm”的单元格B8的内容包含我想用于“report1.xlsx”作者的文本字符串。我已经写了下面的宏,但继续得到一个 “对象不支持此属性或方法”错误在最后一行。

Sub add_properties()

Dim xL As Excel.Application
Set xL = New Excel.Application

Dim mainWB As Excel.Workbook
Dim reportWB As Excel.Workbook

Set mainWB = xL.Workbooks.Open("C:\Users\ga1085\adHoc\macros.xlsm")
Set reportWB = xL.Workbooks.Open("C:\Users\ga1085\adHoc\report1.xlsx")

MsgBox mainWB.Sheets("adHoc").Range("B8").Value

mainWB.Sheets("adHoc").Range("b8").Copy
reportWB.BuiltinDocumentProperties("author").PasteSpecial (xlPasteValues)

End Sub

我也在使用“macros.xlsm”来更新“report1.xlsx”的边距,标题等 - 这也适用于那些吗?

2 个答案:

答案 0 :(得分:0)

尝试以这种方式打开工作簿。您需要将Microsoft Excel对象库添加到引用中。

Dim xL As excel.Application
Set xL = New excel.Application
Dim mainWB As excel.Workbook
Dim reportWB as excel.Workbook

Set mainWB = xL.Workbooks.Open("macros.xlsm")
Set reportWB = xL.Workbooks.Open("report1.xlsx")

答案 1 :(得分:0)

我想出了如何让它发挥作用。 Macros.xlsm已经打开并包含我想要执行的宏。我没有必要使用PasteSpecial。我认为主要区别在于我必须声明变量“author”然后使用变量“author”来更新报表工作簿。我是VBA的新手 - 并且会感谢任何其他输入或解释。谢谢你的帮助。

Sub add_properties()

Dim author

Dim reportWB As Excel.Workbook

Set reportWB = Workbooks.Open("C:\Users\ga1085\adHoc\report1.xlsx")

author = Workbooks("macros.xlsm").Sheets("adHoc").Range("b8").Value

reportWB.BuiltinDocumentProperties("author").Value = author

End Sub