2014-12-07 78 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編輯器的視圖菜單中打開它。

相關問題