问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2024-09-28 01:50

我来回答

1个回答

热心网友 时间:2024-09-28 21:39

有时候,需要使用代码确认某个工作簿是否是特定模板创建,或者是否属于某个应用程序,如果是就打开并操作该工作簿或应用程序。如何实现呢?
一种常用的方法是对工作簿文件添加自定义的文档属性,这样让代码在不打开工作簿的情况下判断是否是想要的工作簿。
为工作簿添加自定义文档属性
单击“文件——信息——属性——高级属性”,打开工作簿的“属性”对话框。选取“自定义”选项卡,在名称文本框中输入属性名称,示例中是“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
标识并使用VBA代码识别特定的工作簿

一种常用的方法是对工作簿文件添加自定义的文档属性,这样让代码在不打开工作簿的情况下判断是否是想要的工作簿。为工作簿添加自定义文档属性 单击“文件——信息——属性——高级属性”,打开工作簿的“属性”对话框。选取“自定义”选项卡,在名称文本框中输入属性名称,示例中是“MyTestBook”,在类型...

如何利用VBA获取指定工作簿中的工作表名称

如果需要用VBA的方法获得某个工作簿中工作表的名称,可以使用下面的代码,其中使用了 Microsoft ActiveX Data Objects (ADO),可以将指定工作簿中的工作簿名称显示在A列中,在使用时需将代码中的工作簿名称及路径进行更改。Sub GetSheetNames()Dim objConn As Object Dim objCat As Object Dim tbl As...

如何用VBA代码检测已知工作簿是否打开

假设目标工作簿名称是 target.xls 代码是:Dim book As Workbook 承接你的程序 x = "target.xls"For Each book In Workbooks If book.Name = x Then MsgBox x & " 工作簿已经打开"goto 100 End If Next MsgBox x & " 工作簿并未打开"100:继续你的程序 由于不知 已打开 和 未打开 之后的...

VBA代码如何表示任意工作表

MsgBox "工作表<" & s & ">" & IIf(t, "", "不") & "存在。"'如果不存在,退出程序:If Not t Then Exit Sub '如果存在,并要使用这个工作表中的单元格 A1 的数据:Dim ss With Worksheets(s)ss = .Range("A1")MsgBox "工作表<" & s & ">中 单元格 A1 的值:" & ss E...

如何利用VBA获取指定工作簿中的工作表名称

Set wk = Workbooks.Open("D:\函数习题\第1章 函数基础.xls")For Each sh In Workbooks(2).Worksheets rw = rw + 1 ThisWorkbook.Sheets(1).Range("a" & rw) = sh.Name Next sh wk.Close True End Sub 新建一个工作簿,在VBA中新建一个模块,将上面的代码复制进去。记住要根据自己指定...

求在EXCEL VBA中打开指定工作薄的完整代码???

首先,确保你的Excel文件是支持宏的,通常情况下,将.XLSX文件另存为扩展名为.XLSM的文件。这一步将启用VBA功能。接着,按下键盘上的Alt + F11,这会快速带你进入Visual Basic for Applications (VBA) 环境。在VBA编辑器中,你会看到一个工作簿窗口。在VBA编辑器中,找到并双击工作簿标签,这会创建...

vba 打开固定地址下,指定名称的工作簿

如果只是打开文件,可以试试以下VBA代码Sub 打开文件()Dim wjm, lj1, lj2wjm = Sheets("Sheet1").Range("A1") & ".XLSM"lj1 = "E:\新建文件夹\" & wjmlj2 = "E:\keil\" & wjmIf Dir(lj1) <> "" Then '判断文件是否存在 Workbooks.Open Filename:=lj1Else MsgBox "文件...

excel用VBA另保存excel中特定的工作表

代码如下:sub 分开存为工作薄()dim sh as worksheetdim wk1 as workbookdim wk2 as workbookdim ipath as stringapplication.screenupdating = false ‘将屏幕更新关闭application.displayalerts = falseipath = thisworkbook.path & "\" '保存路径为当前工作簿所在路径set wk1 = workbooks.addse...

excel中通过vba如何在工作簿中寻找的工作表并使之成为当前工作表

'假设你的工作薄中有temp5个工作表 '例如5个,下面的程序你先看,选我为正确答案有问题可以问我哦 temp5=5 Windows(a).Activate For tempa = 1 To temp5 temp = Worksheets(1).Name If temp = asd Then Sheets(temp).Select End If next tempa ...

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决

1、点击Excel界面左下角的录制宏按钮录制宏。2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。4、按Alt+F11打开VBE界面,如下图。5、在代码部分...

vba代码所有工作簿都可以用 vba多工作簿汇总代码 VBA复制工作簿 VBA整个工作簿查询 excelvba合并工作簿 一个工作簿 工作簿 复制工作簿 vba多工作簿查找
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
反极化和超射有什么区别么? 飞利浦牙刷可以用多久 飞利浦电动牙刷寿命有多久? 电动牙刷可以用多久 飞利浦电动牙刷可以用多久 飞利浦电动牙刷使用寿命有多长? 电动牙刷柄可以用多久 电动牙刷柄使用寿命是多久? 一个电动牙刷能用多久 电动牙刷寿命有多长? 一支电动牙刷能用多久 电动牙刷的使用寿命有多长? 电动牙刷一般可以用多久 电动牙刷的使用寿命是多久? 电动牙刷多久换一次 电动牙刷何时更换最好? 大家帮忙看看这个电脑配置的价钱,及性能 玩玩大型单机游戏3D网游 下 ... 用VBA判断指定的excel文件夹或文件是否存在 彩虹岛85级..应该单刷高速,还是和一个90级的组队打葛雷啊?(两个都是... 公主岭养老金错过认证时间怎么办 韩式石锅拌饭怎么制作? 微信号被封了,怎么才能换头像? 微信被拉黑后能看到对方的头像吗? 微信头像灰色是被删了的意思吗? 诛仙法宝附件灌注爆击伤害的符如何得到 诛仙怎样获得震系装备?震系装备怎么样? 微信号被永久封停后 头像是被封时候的头像吗?还能搜到这个微信吗? 诛仙前传鸿蒙试炼奖励是什么? 夜精于勤,荒于嬉的下一句 建行48开头的是什么卡 建行62的是什么卡 求汽车美容与装潢的实习资料.越多越好我要补齐两个学期啊...谢谢哪... 淘宝派单员是做什么的 下单员是做什么的 应该怎么对付有外遇的男人 老公出轨第三者 妻子如何捍卫婚姻 ...王者之战》里,弗拉基米尔攻打的科尔颂是现在哪个国家的什么地方... 京东白条是什么不分期 ...月底游江南六大古镇,自驾车两天时间,急求高手指点路线! ...坐火车到。求一个三日游或五日游的攻略,求高手指点。。 打白条 不分期什么意思 ...晚回来,5个人有3个50多岁老人想吃海鲜洗海澡洗温泉,求高手指点... ...古镇、芙蓉镇后自宜昌做游轮去重庆。求高手指点路线价格及特色... 1000美金做0.1手,能抗多少点 1.2.3.4.5.6.7.8.9怎么排列 ...开户1000美金杠杆比例是100做0.1手最高能抵抗多少风险? 1.2.3.4.5.6.7.8.9填在9个方框,使得横竖斜之和相等 把1.2.3.4.5.6.7.8.9.分别填入3行3格中,5在中间,使每横竖斜行相加等于15... 1.2.3.4.5.6.7.8.9.要成为横竖斜都等于15怎么算 南溪有到柳州的直达汽车吗 从金沙到宜宾南溪怎么坐车 宜宾市南溪区到遵义市红花岗区有多远_宜宾到北海自驾游攻略最佳路线_百 ... 苹果手机屏幕失灵乱跳怎么办啊? 我的iPhone6充电的时候屏幕会失灵,指纹解锁也没用了,求大神解释一下肿... 为什么我的iphone会上滑下滑? 水果店上班没交社保该怎么办呢 水果店给员工交社保怎么交