我有一个位于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"))
答案 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)
。