如何获取打开的工作簿的文件扩展名
问题描述:
如何确定打开的工作簿是否为模板(.xltm)。基本上,我有一个模板。如果用户以.xltm文件打开模板(右键单击>打开)并尝试运行宏,我应该阻止执行宏。 如果用户双击模板,它将以.xlsm打开,在这种情况下,我没有问题。如何获取打开的工作簿的文件扩展名
有人能帮我解决这个问题吗?提前致谢。
问候,
答
你可以用下面的例子来获取文件的扩展名
Sub extd()
Dim extFind As String
Dim sFile As String
Const FilePath As String = "C:\Users\aa\Desktop\devces.docx"
sFile = Dir(FilePath & filename & "*")
extFind = Right$(sFile, Len(sFile) - InStrRev(sFile, "."))
MsgBox extFind
End Sub
答
我一直在寻找相同。由于ActiveWorkbook.Name
取决于Windows属性Hide extensions for known file types
(如果你有他们隐藏.Name
不会返回扩展名),你可以使用Workbook.FileFormat
。根据XlFileFormat enumeration
返回一个整数值。因此,要检查:
Option Explicit
Sub sample()
Debug.Print ActiveWorkbook.FileFormat
Select Case ActiveWorkbook.FileFormat
Case xlOpenXMLWorkbookMacroEnabled '52 xlsm
Debug.Print "Its a workbook with macros enabled"
Case xlOpenXMLTemplateMacroEnabled '53 xltm
Debug.Print "Its a template with macros enabled"
Case xlWorkbookDefault '51 xlsx
Debug.Print "Its a workbook without macros"
End Select
End Sub
Debug.Print
输出到inmediate窗口,U可以Ctrl+G
或VB编辑器的视图菜单中打开它。
我认为这个答案不回答OP的问题。如果我们已经有文件的路径/名称,这只是寻找任何文件扩展名的非常通用的代码。 – rineez 2018-01-05 06:25:07