我在excel 2010中有一些VBA代码,可将多个.csv文件导入到一个excel工作簿中,但是,有时会存在一个流氓文件,其中不包含任何内容,并且文件大小为零,这会引发错误,因此我必须手动转到该文件夹并将其删除,然后再次运行我的宏。 因此,我在寻求一些帮助之后,将允许我检查文件夹中包含的所有.csv文件的文件大小,并删除任何零值,然后再导入它们。有办法吗?或者可能是另一种建议的方法会有所帮助? 我对VBA还是很陌生,所以如果我不能立即完全理解,请耐心等待。
我调查了FileLen(C:\ Test \ test.csv)= 0然后杀死所说的文件。 但这仅会专门删除提到的文件。我宁愿检查所有文件大小,如果任何大小为零,请杀死它们。
答案 0 :(得分:1)
您可以使用Stream
来检查文件夹中的文件,如果文件的类型正确且大小= 0,则将其删除。
请务必谨慎运行,因为删除操作将是永久性的(不可恢复)。
FileSystemObject
答案 1 :(得分:0)
您可以使用DIR命令搜索文件夹中的所有文件,然后杀死文件大小为0的任何文件。 下面的代码搜索指定的文件夹,并在名为Main的工作表中列出* .xls文件名。 应该很容易进行调整,并结合您自己的Kill命令。
Sub Directory()
Dim strPath As String
Dim strFolderPath As String
Dim strFileName As String
Dim intRow As Integer
Dim intColumn As Integer
Dim intNumber As Integer
intRow = 1
intColumn = 1
intNumber = 0
strFolderPath = "h:\excel\*.xls" 'search through H drive excel folder
strFileName = Dir(strFolderPath) 'Get name of first file
Do
Sheets("Main").Cells(intRow, intColumn) = strFileName 'write filename
strFileName = Dir 'get next filename
intRow = intRow + 1
Loop Until strFileName = ""
End Sub
答案 2 :(得分:0)
感谢您的迅速答复,我最终设法使我的循环摇摇欲坠,安迪的样本。 在罗恩做出回应之前,我已经开始尝试他的想法了,所以继续进行下去。 但是,我确实喜欢先询问用户是否要删除该文件的想法,因此我想我也会对Ron的建议有所了解,并且可能会从中学习一些东西。 再次感谢。