我编写了一个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
任何建议都将不胜感激。
答案 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)
您错过了FilePath
和Filename
之间的斜杠:
sFile = Dir(FilePath & "\" & Filename & "*")
顺便说一句,你在哪里为变量Filename
赋值?如果您打算使用活动工作簿的名称,则应使用ActiveWorkbook.Name
。