2016-01-28 54 views
0

我想創建一個「驅動程序」工作簿,其中有人可以更新將應用於其他工作簿的值。 「macros.xlsm」單元格B8的內容包含我想要用於「report1.xlsx」作者的文本字符串。我寫了下面的宏,但在最後一行中不斷收到 「對象不支持此屬性或方法」錯誤。Excel VBA - 使用不同工作簿中的值更新BuiltinDocumentProperties

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」 - 將那些這項工作呢?

+1

您正在尋找的東西像'reportWB.BuiltinDocumentProperties( 「作家」)= mainWB.Sheets( 「即席」),範圍( 「B8」)。Value' ??? –

+0

是的。這就是我想要的。我試過你的代碼行,但沒有奏效。它也沒有給出錯誤。 – Julie4435637

回答

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") 
+0

我更新了我的代碼以反映您的建議,但我的代碼仍然存在與此行相同的問題。 reportWB.BuiltinDocumentProperties(「author」)。PasteSpecial(xlPasteValues)消息框正確顯示了我想用作作者的字符串。 – Julie4435637

+0

嘗試替換您的複製/粘貼:reportWB.BuiltinDocumentProperties(「作者」)= mainWB.Sheets(「adHoc」)。範圍(「b8」)。價值 – PKatona

+0

我已經嘗試過,根據德克的建議。它沒有給我一個錯誤,但它沒有更新作者。 – Julie4435637

0

我想出瞭如何讓它工作。 Macros.xlsm已經打開並且包含我想要執行的宏。我不必使用PasteSpecial。我認爲主要的區別是我必須聲明一個變量「作者」,然後使用變量「作者」來更新報告工作簿。我是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 
相關問題