Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA内置文档属性_Vba_Excel - Fatal编程技术网

VBA内置文档属性

VBA内置文档属性,vba,excel,Vba,Excel,我有一个宏,它位于WorkbookA中并从WorkbookB检索数据。我想返回WorkbookB的“上次保存时间”,并将其放入WorkbookA中的一个单元格中。在下面的代码中,“lastsave”是指WorkbookA中的单元格的命名区域 我从各种网站和类似的问题上尝试了以下内容,但没有效果。我怀疑这个解决方案与对象、列表中的项目、值等有关,但我似乎无法确定 1) 错误:对象不支持此属性或方法 Dim lastsavetime as Object set lastsavetime = Wo

我有一个宏,它位于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
 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value
2) 错误:自动化错误,未指定错误

 Dim lastsavetime as variant
 set lastsavetime = Workbooks(B).BuiltinDocumentProperties("Last Save Time")
 Workbooks(A).Sheet1.Range("lastsave").Value = lastsavetime
3) 错误:对象“DocumentProperty”的方法“Value”失败

 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value
 Dim propertylist as DocumentProperties
 Set propertylist = Workbooks(B).BuiltinDocumentProperties

 Workbooks(A).Sheet1.Range("lastsave").Value = (propertylist.Item("Last Save Time"))
4) 错误:对象不支持此属性或方法

 Dim lastsavetime as Object
 set lastsavetime = Workbooks(B).BuiltinDocumentProperties("Last Save Time")
 Workbooks(A).Sheet1.Range("lastsave").Value = lastsavetime
 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value
5) 错误:对象“DocumentProperty”的方法“Value”失败

 Workbooks(A).Sheet1.Range("lastsave").Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value
 Dim propertylist as DocumentProperties
 Set propertylist = Workbooks(B).BuiltinDocumentProperties

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

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()中来隐藏上面语句的右侧


仅供参考工作簿(A)。工作表1失败,因为工作簿(A)是工作簿对象。工作簿对象没有Sheet1方法或属性

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

ThisWorkbook.Names("lastsave").RefersToRange.Value = Workbooks(B).BuiltinDocumentProperties("Last Save Time").Value
  • 在错误1、3、4和5中:对象工作簿不支持方法Sheet1。使用
    工作簿(A).工作表(1)

  • 在错误2中,它应该是相同的消息。我不知道为什么错误消息发生了变化。出了点事


总之,正是
.Sheet1
引起了所有这些问题。请改用
.sheets(1)

.Sheet
不是
工作簿
对象的属性?另外,您可能需要为工作簿对象在.Sheet上执行
.Value=lastsavetime.Value
良好的点操作。我添加了工作手册(A),以明确问题中的数据去向,但实际上我只有Sheet1.Range。。。。我的道歉我明白这是多么的误导。我将按照您的建议尝试.Value=lastsavetime.Value。如果未设置属性,也可能会引发错误,例如,在新的/未保存的工作簿上。