2014-12-07 101 views
0

如何确定打开的工作簿是否为模板(.xltm)。基本上,我有一个模板。如果用户以.xltm文件打开模板(右键单击>打开)并尝试运行宏,我应该阻止执行宏。 如果用户双击模板,它将以.xlsm打开,在这种情况下,我没有问题。如何获取打开的工作簿的文件扩展名

有人能帮我解决这个问题吗?提前致谢。

问候,

回答

0

你可以用下面的例子来获取文件的扩展名

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 
+0

我认为这个答案不回答OP的问题。如果我们已经有文件的路径/名称,这只是寻找任何文件扩展名的非常通用的代码。 – rineez 2018-01-05 06:25:07

1

我一直在寻找相同。由于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编辑器的视图菜单中打开它。