【求助】如何用VBA读取文件特定的一列,如果存在空值就删除该文件

「已注销」 2019-07-14 04:39:48
举例:
指定路径文件夹下n个CSV文件(数据各不相同)
特征列为D列
B.CSV,C.CSV的D列存在空值

A.CSV
A B C D E
1 2 3 4 5
a b c d e
6 7 8 9 10
B.CSV
A B C D E
1 2 3 4 5
a b c e

6 7 8 9 10
C.CSV
A B C D E
1 2 3 4 5
a b c d e


6 7 8 10
f g h i j

...........
n.CSV
A B C D E
1 2 3 4 5
a b c d e

6 7 8 9 10
如何删除B.CSV和C.CSV这类文件,即需要删除文件夹下特定列存在空值的文件


感谢各位老师~
...全文
107 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2019-07-14
  • 打赏
  • 举报
回复
除去行首和行尾的空格,只要一行中包含三个空格就是需要删除的文件:
下面是vbs示例代码:

Set fso = createobject("scripting.filesystemobject")
curdir = fso.getparentfoldername(wscript.scriptfullname)

Set reg = createobject("vbscript.regexp")
reg.Global = True
reg.multiline = True
reg.ignorecase = True
reg.pattern = "[ ]{3,}"

For Each objfile In fso.getfolder(curdir).files
If LCase(fso.getextensionname(objfile.name)) = "txt" Then
Set stream = fso.opentextfile(objfile.path,1,False)
blnfound = False
Do Until stream.atendofstream
strline = Trim(stream.readline())
If reg.test(strline) Then
blnfound = True
Exit Do
End If
Loop
stream.close
If blnfound Then
msgbox objfile.path
'objfile.delete True
End If
End If
Next

msgbox "done!"

运行示例:


下载地址:
链接:https://pan.baidu.com/s/1zV_f6cmBLsNz4VjJnatH0A
提取码:3lbk

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧