标识并使用VBA代码识别特定的工作簿
发布时间:2022-02-05 17:21:20
有时候,需要使用代码确认某个工作簿是否是特定模板创建,或者是否属于某个应用程序,如果是就打开并操作该工作簿或应用程序。如何实现呢?
一种常用的方法是对工作簿文件添加自定义的文档属性,这样让代码在不打开工作簿的情况下判断是否是想要的工作簿。
为工作簿添加自定义文档属性
单击“文件——信息——属性——高级属性”,打开工作簿的“属性”对话框。选取“自定义”选项卡,在名称文本框中输入属性名称,示例中是“MyTestBook”,在类型下拉列表中选择“是或否”,选取取值选项按钮中的“是”,单击“添加”按钮,如下图1所示,为该工作簿添加自定义文档属性。
图1
安装工具库DSOFile.dll
我们要使用名为DSOFile.dll的COM对象从关闭的工作簿中读取文档属性,因此,需要下载并安装该DLL。可以在Microsoft的网站上下载:
下载后,双击安装。安装完毕后,选择VBE的菜单“工具——引用”命令,在“引用”对话框中找到并选取“DSO OLE Document Properties Reader 2.1”前的复选框,单击“确定”,如下图2所示。
图2
编写检查自定义文档属性的函数
下面的自定义函数FileHasSomeProperty用来检查指定的文件是否具有指定的文档属性,其中参数sFile接受指定的文件,参数sProperty接受指定文档属性名,如果sFile中具有名为sProperty的属性,则返回True,否则返回False。
‘检查指定文件是否具有特定的文档属性
Function FileHasSomeProperty(ByVal sFileAs String, _
ByVal sProperty As String) As Boolean
Dim objDSO As DSOFile.OleDocumentProperties
Dim objProperty As DSOFile.CustomProperty
‘使用DSOFile来获取指定文件的文档属性
Set objDSO = New DSOFile.OleDocumentProperties
objDSO.Open sFile
‘遍历自定义文档属性集合
‘如果存在指定名称且取值为是的属性
‘则返回True
For Each objProperty In objDSO.CustomProperties
If (objProperty.Name = sProperty) _
And (objProperty.Type =dsoPropertyTypeBool) Then
FileHasSomeProperty = True
Exit For
End If
Next objProperty
objDSO.Close
End Function
测试
下面的代码由用户选择工作簿,测试工作簿中是否具有名为MyTestBook的属性,如果是,则弹出下图3所示的消息。
Sub testFileHasSomeProperty()
Dim vFileNames As Variant
Dim i As Long
Dim strPropertyName As Variant
vFileNames = Application.GetOpenFilename(“Excel工作簿(*.xls*), *.xls*”, , “选择工作簿”, , True)
If Not IsArray(vFileNames) Then Exit Sub
strPropertyName = “MyTestBook”
For i = LBound(vFileNames) To UBound(vFileNames)
If FileHasSomeProperty(vFileNames(i), strPropertyName) Then
MsgBox “具有特定标识的工作簿存在!”
End If
Next i
End Sub
如果所选工作簿具有指定的属性,则弹出下图3所示的消息。
图3


猜你喜欢
- 很多游戏界面中都会有一项名为垂直同步的设置,如果该项不可见,一般是默认开启的,垂直同步这项设置和显卡性能没有太大的关系,如果没有开启垂直同步
- 近日外媒 OnMSFT 撰写了一篇评论文章,指出即将到来的 Windows 10X 将成为微软对抗谷歌 Chrome OS 最新武器,虽然微
- 有不少用户在更新Win10 1909系统版本之后,发现要打开资源管理器进行操作,结果页面显示卡顿无反应等等现象,那么遇到这个问题该如何进行解
- 咱们在 操纵WPS 笔墨与Word 笔墨 停止 一样平常办公时, 常常 需求 输出 林林总总的文档, 偶然候文档中有 许多数字 需求批量删除
- 系统的更新功能,有时候很方便 ,在软件更新或是系统更新的时候会提示你更新,但这种频繁不断的提示也让人感到烦恼,而且一般软件的更新都是在有Wi
- 想要更加全面的享受QQ浏览器中的种种福利,首先便要登录自己的账号,并通过签到及一些相关的操作来赚取积分。那么,QQ浏览器要怎么登录账号呢?下
- 我们在观看在追剧的过程中,连续播放已经成为我们的一个固有的习惯,如果能跳掉片头、片尾以及广告,那是最好的,那你知道优酷视频是怎么设置连续播放
- 在浏览网页时,你一定会不时看到一些需要保存的数据信息。这些信息或许是一个完整的表格,或许是一段文字,如果要保存这类信息,我们常用的方法就是拖
- 最近微软向用户们发布了第六个累积性更新,这次更新主要面对Win10 21H1、Win10 20H2、Win10 2004系统。值得一提的是,
- XP系统无法正常关机怎么办?很多使用XP系统的朋友,在将电脑关机的时候都有遇到电脑无法正常关机的问题。这是怎么回事呢?今天小编就和大家分享X
- 所谓批处理,就是可以简化一些重复性的任务,如果你能掌握各种批处理命令,它将给你的工作带来很大的帮助。今天小编将给大家分享批处理命令在Wind
- Mac如何查询UUID信息?在我们日常使用苹果mac电脑时,应该有很多用户想要查询UUID信息,那么Mac如何查询UUID信息呢?下面小编就
- 1月24日消息 微软已经更新了MSDN版Win10一周年更新版ISO镜像,添加了2017年1月补丁包。现在该版本64位合集镜像中文版已经流出
- 这个方法比利用剪切板的方法要省很多步骤。比较简单
- 最近总是有朋友问我,win7系统如何设置cmd命令提示符窗口的背景颜色,下面小编把解决办法分享到脚本之家平台供大家参考相信很多Win7系统用
- iPhone手机应用程序太多,桌面太混乱怎么办?升级iOS 14吧!iOS 14有一个叫做App Library的新功能,它会自动将你所有的
- 今天小编为大家介绍如何将wps列删除掉。1.wps列删除,鼠标点击字母,选择列,然后点击鼠标右键,按d键就删除了!2.选择性删除就麻烦些,鼠
- 最近很多小伙伴想要设置win10桌面右键菜单添加关闭显示器,但是不知道怎么弄,其实非常简单只要修改注册表就可以了,下面来看看详细的方法吧。w
- sealmon.exe - sealmon进程的详细介绍进程文件: sealmon or sealmon.exe 进程名称: SealedM
- 日前,微软操作系统部门老大Terry Myerson在微软官方博客发表博文,正式宣布更改Windows支持政策。为了普及Windows 10