Excel VBA-使用不同工作簿中的值更新内置文档属性

Excel VBA-使用不同工作簿中的值更新内置文档属性,vba,excel,Vba,Excel,我想创建一个“驱动程序”工作簿,其中有人可以更新将应用于其他工作簿的值。“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

我想创建一个“驱动程序”工作簿,其中有人可以更新将应用于其他工作簿的值。“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”的页边距、页眉等,这样也可以吗?

尝试以这种方式打开工作簿。您需要将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")

我找到了让它工作的方法。Macros.xlsm已打开并包含我要执行的宏。我不必使用特殊的。我认为主要的区别在于我必须声明一个变量“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

您正在寻找类似于
reportWB.builtinocumentproperties(“author”)=mainWB.Sheets(“adHoc”).Range(“B8”).Value
?是的。这就是我想要的。我试过你的代码,但没用。它也没有给出错误。我更新了我的代码以反映您的建议,但我的代码在这行代码中仍然存在相同的问题。reportWB.builtinocumentproperties(“author”).PasteSpecial(xlPasteValues)消息框正确显示我要用作作者的字符串。尝试将您的复制/粘贴替换为:reportWB.builtinocumentproperties(“author”)=mainWB.Sheets(“adHoc”).Range(“b8”)。值我已经按照上面的Dirk建议尝试过了。它没有给我一个错误,但它没有更新作者。你正在保存吗?e、 g.报告WB.保存?我真的测试了它,它对我有效。。。您是否尝试过对属性执行debug.print以查看它是否已设置?否。它只会打开report1.xlsx-现在它不会保存。我将不得不把它添加到代码中。我从未听说过debug.print,但将尝试它。