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

时间:2015-08-07 15:17:17

标签: excel vba excel-vba file-extension

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

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

我已经尝试了下面的代码,看看我是否可以正确获取文件扩展名,但我的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

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您错过了FilePathFilename之间的斜杠:

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

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