手机版

识别并使用VBA代码来识别特定的工作簿

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

有时,需要使用代码来确认工作簿是由特定模板创建的还是属于某个应用程序,如果是,请打开并操作该工作簿或应用程序。如何实现?

一种常见的方法是在工作簿文件中添加自定义文档属性,这样代码就可以在不打开工作簿的情况下判断它是否是所需的工作簿。

向工作簿添加自定义文档属性。

单击文件——信息——属性——高级属性打开工作簿的属性对话框。选择“自定义”选项卡,在名称文本框中输入属性名称,示例中为“MyTestBook”,在类型下拉列表中选择“是或否”,在值选项按钮中选择“是”,点击“添加”按钮,如下图1所示,为该工作簿添加自定义文档属性。

图1

安装DSOFile.dll工具库。

我们希望使用名为DSOFile.dll的COM对象从关闭的工作簿中读取文档属性,因此我们需要下载并安装DLL。您可以从微软网站下载:

下载后,双击安装。安装完成后,在VBE菜单中选择命令“Tool —— Reference”,在“Reference”对话框中找到并选中“DSO OLE文档属性阅读器2.1”前的复选框,点击“OK”,如下图2所示。

图2。

编写一个检查自定义文档属性的函数。

下面的用户定义函数FileHasSomeProperty用于检查指定的文件是否具有指定的文档属性,其中参数sFile接受指定的文件,参数sProperty接受指定的文档属性名称。如果sFile有一个名为sProperty的属性,则返回True,否则返回False。

检查指定的文件是否具有特定的文档属性。

函数文件属性(ByVal sFileAs字符串,_

ByVal属性为字符串)为布尔值

将对象定义为文件。OleDocumentProperties

将对象属性作为数据对象。CustomProperty

使用DSOFile获取指定文件的文档属性。

设置对象文件=新文件。OleDocumentProperties

objDSO。打开文件

遍历自定义文档属性集合。

如果存在具有指定名称的属性,并且该值为是。

返回True。

对于对象中的每个对象属性。CustomProperties

if(ObJect property。Name=sProperty) _

和(objProperty。Type=dsoPropertyTypeBool)然后

文件哈希属性=真

退出

如果…就会结束

下一个对象属性

objDSO。关闭

结束功能

试验

下面的代码由用户选择工作簿,并测试工作簿是否有一个名为MyTestBook的属性。如果是这样,将弹出如下图3所示的消息。

Sub testFileHasSomeProperty()

作为变体的模糊文件名

模糊如龙

将字符串命名为变量

vfilenames=application . getopen filename(" Excel工作簿(*)。xls*),*。xls*、“选择工作簿”、“真”)。

如果不是数组,则退出Sub

strPropertyName="MyTestBook "

对于I=LBound(vfilename)到UBound(vfilename)

如果文件有属性(虚拟文件名(I),字符串名称),那么

MsgBox“特定标识的工作簿已存在!”

如果…就会结束

接下来我

末端接头

如果所选工作簿具有指定的属性,则会弹出如下图3所示的消息。

图3。

版权声明:识别并使用VBA代码来识别特定的工作簿是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。