gpt4 book ai didi

excel - 使用 Excel VBA 从 Word 文档中提取公司属性

转载 作者:行者123 更新时间:2023-12-04 20:42:51 25 4
gpt4 key购买 nike

我正在使用 Excel 2010 和 VBA 重新组织 C:\驱动器上的一些 Word 文档,并且我想将每个文档的“公司”属性拉到包含文档列表的工作表中。每个文档的完整文件路径出现在 A 行(如:“C:\folder\subfolder\file.doc”),我想在 F 行填充相应的“公司”属性。

我正在尝试为自定义 Excel 函数 DocCompany 编写一个宏,该函数将使用包含本地文件路径的文本字符串来返回文件路径标识的文档的“公司”属性。
我对 Last Modified 和 File Size 属性的运气更好,因为它们都有专用的 VBA 函数(分别为 FILEDATETIME 和 FILELEN)。在每种情况下,我所要做的就是为自定义 Excel 函数编写一个宏,该函数返回位于工作表中的文件路径字符串的 VBA 函数的结果。

给定以下函数,=GetFileDateTime(A1) 将返回由 A1 中包含的文件路径字符串标识的文档的最后保存日期。

Function GetFileDateTime(FileName As String) As Date
GetFileDateTime = FileDateTime(FileName)
End Function

给定以下函数,=FileSize(A1) 将返回由 A1 中包含的文件路径字符串标识的文档的文件大小(以字节为单位)。
Function FileSize(FileName As String)
FileSize = FileLen(FileName)
End Function

但是,Company 属性没有对应的 VBA 函数,所以(如上所述),我想编写一个宏定义一个自定义 Excel 函数 DocCompany,它将接受本地文件路径字符串作为输入并使用它来输出 Company 的属性文档。

这是我的宏现在的样子:
Function CompanyID(FileName As String) As String
CompanyID = Documents(FileName).Open
Documents(FileName).BuiltinDocumentProperties (wdPropertyCompany)
End Function

当我尝试保存它时,Excel 返回错误消息“编译错误:未定义子或函数”。然后它在第二行中选择对“文档”集合的引用。

当我能找到的每个引用都确认它实际上是一个对象或集合时,为什么 Excel 坚持我将“文档”定义为一个变量?我该怎么做才能使此代码正常工作?我需要采取不同的方法吗?

最佳答案

Why does Excel insist that I define "Documents" as a variable when every reference I can find confirms that it IS in fact an object or collection?



由于 Documents不是 Excel 对象模型的一部分,它被解释为一个变量。您需要将 Word 绑定(bind)到 Excel 实例,并引用 Word 应用程序类的该实例。
Function CompanyID(FileName As String) As String
Dim wdApp as Object 'WOrd.Application
Dim doc as Object 'Word.Document
Const wdPropertyCompany as Long = 21 'Explicit reference for late-bound Word Application

Set wdApp = CreateObject("Word.Application")
Set doc = wdApp.Documents.Open(FileName)
CompanyID = doc.BuiltinDocumentProperties (wdPropertyCompany)
doc.Close False

End Function

关于excel - 使用 Excel VBA 从 Word 文档中提取公司属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com