VBA BuiltInDocumentProperties

时间:2015-09-29 20:37:21

标签: vba excel-vba excel

我有一个位于WorkbookA中的宏,并从WorkbookB中检索数据。我想返回WorkbookB的“上次保存时间”并将其放入WorkbookA中的单元格中。在下面的代码中,“lastsave”是指在WorkbookA中引用单元格的命名范围。

我从各种网站和类似的问题尝试过以下但无济于事。我怀疑解决方案与对象,列表中的项目,值等有关,但我似乎无法将手指放在上面。

1)错误:对象不支持此属性或方法

 Dim lastsavetime as Object
 set lastsavetime = Workbooks(B).BuiltinDocumentProperties("Last Save Time")
 Workbooks(A).Sheet1.Range("lastsave").Value = lastsavetime

2)错误:自动化错误,未指定错误

 Dim lastsavetime as variant
 set lastsavetime = Workbooks(B).BuiltinDocumentProperties("Last Save Time")
 Workbooks(A).Sheet1.Range("lastsave").Value = lastsavetime

3)错误:对象'DocumentProperty'的方法'值'失败

 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value

4)错误:对象不支持此属性或方法

 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value

5)错误:对象'DocumentProperty'的方法'值'失败

 Dim propertylist as DocumentProperties
 Set propertylist = Workbooks(B).BuiltinDocumentProperties

 Workbooks(A).Sheet1.Range("lastsave").Value = (propertylist.Item("Last Save Time"))

3 个答案:

答案 0 :(得分:0)

试试这个:

Workbooks(A).Worksheets("Sheet1").Range(lastsave).Formula = Workbooks(B).BuiltinDocumentProperties("Last Save Time")

下面:
A是一个包含目标名称wb的字符串(“SaveTimeLog.xlsx”)
B是一个字符串,其中包含您正在捕获上次保存时间的wb名称,例如“MyWB.xlsx”
Sheet1是您要写入上次保存时间的工作表的名称,例如“工作表Sheet1”
lastsave是一个字符串,其中包含对信息所在的单元格的引用,例如“G4”

这样会将上次保存时间写为数值。要以人性化的格式获取它,您可以将目标单元格格式化为日期/时间,或者通过将其封装在CStr()中来隐藏上述语句的右侧。

FYI 工作簿(A).Sheet1失败,因为工作簿(A)是工作簿对象。没有工作簿对象的Sheet1方法或属性。

答案 1 :(得分:0)

假设您的工作簿B已打开,这适用于工作簿A中的模块。

ThisWorkbook.Names("lastsave").RefersToRange.Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value

答案 2 :(得分:0)

  • 在错误1,3,4和5中:对象工作簿不支持Sheet1方法。使用Workbooks(A).Sheets(1)

  • 在错误2中,它应该是相同的消息。我不知道为什么错误信息已经改变。事情变得棘手了。

总而言之,导致所有这些麻烦的是.Sheet1。请改用.sheets(1)