标识并使用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
猜你喜欢
- 我们在使用Word处理文件时,经常需要使用到某些命令。为了方便会把一些常用的命令设置一个容易记忆的快捷键。具体应该怎样操作呢?一起和小编学习
- 微软近期发布的更新补丁闯祸还是比较多的,仅仅Outlook就被补丁问题折腾了两次。而导致该问题出现的主要原因是Office 16.0.663
- 使用颜色可以美化文字,同时也可以更好地标识重点内容,下面我们通过一个练习来学习;1、文字颜色1)启动Word,自动新建一个空白文档;2)在页
- 大家在编辑Word文档时,有没有遇到Word中文字重叠在一起的情况。按照文档排版的设计,对其中的文字设置了字体以及字号,没有设置以前,文字在
- 在Excel中表格数据有差异,数据多的情况下,肉眼核对效果极其低下,那么有什么快捷高效的核对数据方法呢?要核对两个表格数据,不需要自己动手,
- WWDC22日期具体是哪天呢?今日凌晨,苹果发布WWDC22官方邀请函,正式公布了线上发布会时间!北京时间6月7日凌晨一点,主题为“码上就位
- 有时候,我们在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框【□】,需要在里面打钩【√】,说实在的,碰到的时候还真有些烦
- excel中false函数有什么作用?如何使用?很多朋友并不是很清楚,所以下面小编就为大家详细介绍一下,不会的朋友快快来学习吧false函数
- 在word编辑文档的时候,我们需要一些特殊符号输入,如框框中打勾这个是比较经常用到的。这种符号怎么在Word中输入,其实有很多种快速实现的方
- 什么是excel中分层级管理数据技巧,就是说象我们在电脑中用文件夹放文件一样的道理,可以展开文件夹看到里面的内容,也可以收缩方便管理。那么在
- 当我们使用win10操作系统时,一些合作伙伴会更新他们的操作系统。当我们更新win101909版本时,如果夜间模式出现故障,小编认为我们可以
- 电脑的蓝屏问题一直是Windows 10系统最常见的问题之一,也是最难解决的问题之一,它也出现的非常频繁。如果遇到过电脑蓝屏的用户都会了解W
- win10系统的大更新,导致了很多用户不习惯新的操作方式,尤其是输入法设置,由原来熟悉的Ctrl+Shift快捷键变成ALT+Shift,同
- 在运用word文档时,有时候打开文件会发现在一个屏面里有两页左右显示,这是什么原因引起呢?又如何解决?下面我来介绍一下word显示两页变成一
- 在做好的PPT中,点:文件——发送——word ,然后按你的需要选择使用的版式即可。
- Excel怎么跨表格求和呢?很多用户对此还不是很清楚,小编这里就给大家带来有关Excel怎么跨表格求和的回答,希望能够帮助大家了解。我们以下
- 席卡就是介绍领导的牌子,一般是红底黑字。那如何用Word和A4纸来设计席卡呢?下面小编给大家简单的介绍一下。第一步:点击【页面布局】,在纸张
- win10系统的C盘有多大?C盘要多大?今天的小编带来了详细的解决方案,希望能对您有所帮助。win10系统c盘多大适合解答1、其实,WIND
- 随着时间的变化,我们会在文档中自动更新一部分固定内容,但如果手动更新非常麻烦,难道就不能智能一点,自动更新吗?当然可以。1、Word设置自动
- 如果你要是修改一篇非常长的文档文件,要编辑其中的某段文字或查找文字,而且这一段文字又正好在word文档的中间,来回翻页查看修改非常不方便,这