如果文件扩展名是.xls,则MsgBox

我写了一个VBA脚本,为具有大量数据(从45,000行到500,000行)的客户端执行不同的sorting/匹配/过滤function。

问题是,如果用户将这些数据导出或保存为.xls文件,则只会保存65,536行,这可能会不足。 在脚本的执行过程中,如果用户“错误地”将数据导出为.xls文件,则希望MsgBox出现,否则继续。

我试过下面的代码,看看我是否可以正确地获得文件扩展名,但是我的MsgBox没有返回任何东西:

 Sub ext() Dim extFind As String Dim sFile As String Dim FilePath As String FilePath = Application.ActiveWorkbook.Path sFile = Dir(FilePath & Filename & "*") extFind = Right$(sFile, Len(sFile) - InStrRev(sFile, ".")) MsgBox extFind End Sub 

任何build议将不胜感激。

FileSystemObject库有一个GetExtensionName()函数,使生活更轻松:

 With CreateObject("Scripting.FileSystemObject") strExt = .GetExtensionName(ActiveWorkbook.Path) End With If StrComp(strExt, "xls", vbTextCompare) = 0 Then ' Display error End If 

或者,您可以检查工作簿中的行数:

 If ActiveSheet.Rows.Count = 65536 Then ' Display error End If 

您错过了FilePathFilename之间的斜线:

 sFile = Dir(FilePath & "\" & Filename & "*") 

顺便说一句,你在哪里分配值variablesFilename ? 如果您打算使用活动工作簿的名称,则应使用ActiveWorkbook.Name