ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1238|回复: 13

请高手探讨关于指定文件夹删除VB代码的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-15 16:52 | 显示全部楼层 |阅读模式
附件中指定文件夹删除VB代码有2个问题,想请高手老师研究解决:
1. 当工作簿和VB 都带密码时,执行会出错,直接程序死掉;
2. 执行时只能执行一个文件夹,不能够对文件夹中的子文件乃至子文件夹中的文件执行。
求解决,谢谢!
指定文件夹删除代码.zip (11.88 KB, 下载次数: 21)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-16 16:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-10-16 17:21 | 显示全部楼层
密码的问题,我机子上无法调试,第二个是遍历的问题:
  1. Option Explicit

  2. Dim ArrFiles(1 To 10000) As String '创建一个数组空间,用来存放文件名称
  3. Dim cntFiles As Long '文件个数

  4. Public Sub ListAllFiles()
  5.     Dim strPath As String '声明文件路径
  6.     Dim i As Long
  7.    
  8.     Dim fso As New FileSystemObject, fd As Folder '创建一个FileSystemObject对象和一个文件夹对象
  9.    
  10.     With Application.FileDialog(msoFileDialogFolderPicker)
  11.         If .Show Then strPath = .SelectedItems(1) Else Exit Sub '对话框取得文件夹,设置要遍历的文件夹目录
  12.     End With

  13.     cntFiles = 0
  14.     Set fd = fso.GetFolder(strPath) '设置fd文件夹对象
  15.     SearchFiles fd '调用子程序查搜索文件
  16.    
  17.     '你可以在这里操作你的文件
  18.     '所有符合条件的文件名均在 ArrFiles 数组中
  19.    
  20.     Sheets(1).Range("A1").Resize(cntFiles) = Application.Transpose(ArrFiles) '把数组内的路径和文件名放在单元格中
  21. End Sub
  22. Sub SearchFiles(ByVal fd As Folder)
  23.     Dim fl As File
  24.     Dim sfd As Folder
  25.    
  26.     For Each fl In fd.Files '通过循环把文件逐个放在数组内
  27.         If Right(fl.Name, 3) = "xls" Or Right(fl.Name, 4) = "xlsx" Then
  28.             cntFiles = cntFiles + 1
  29.             ArrFiles(cntFiles) = fl.Path
  30.         End If
  31.     Next fl
  32.    
  33.     If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合
  34.     For Each sfd In fd.SubFolders '在 Folders 集合进行循环查找
  35.         SearchFiles sfd '使用递归方法查找下一个文件夹
  36.     Next

  37. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-17 13:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这位老师,具体怎么执行能用附件形式体现一下吗? 我将代码导入不能直接运行啊……

TA的精华主题

TA的得分主题

发表于 2014-10-17 13:38 | 显示全部楼层
高飞扬 发表于 2014-10-17 13:05
这位老师,具体怎么执行能用附件形式体现一下吗? 我将代码导入不能直接运行啊……

忘了一个核心问题,要使用FileSystemObject对象,首先引用microsoft scripting runtime,具体方法:VBE--工具--引用--找到microsoft scripting runtime项目并选中

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-17 17:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是可以运行了,但是只是将文件列举到A列了,并没有将相关文件中的VB和宏删除啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-18 11:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没有下文么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-21 10:57 | 显示全部楼层
求老师指点解决后面的问题,就是如何能够将列到A列里面路径的每一个文件中的宏删除呢?

TA的精华主题

TA的得分主题

发表于 2014-10-21 11:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
高飞扬 发表于 2014-10-21 10:57
求老师指点解决后面的问题,就是如何能够将列到A列里面路径的每一个文件中的宏删除呢?

红色部分改成你的删除代码就成啊   
For i = LBound(ArrFiles) To UBound(ArrFiles)
        If ArrFiles(i) = "" Then Exit For
       Debug.Print i & ">>>" & ArrFiles(i)
    Next
   
   

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-21 13:22 | 显示全部楼层
lsdongjh 发表于 2014-10-21 11:33
红色部分改成你的删除代码就成啊   
For i = LBound(ArrFiles) To UBound(ArrFiles)
        If ArrFi ...

老师能贴个附件或者完整一点吗?还是没弄明白应该怎么加……
我一般是用这个删除,但是应该不是call BkpFilAndDel吧?
Sub BkpFilAndDel()
     ActiveWorkbook.Activate
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count
         ActiveWorkbook.VBProject.VBComponents(i).CodeModule.DeleteLines 1, ActiveWorkbook.VBProject.VBComponents(i).CodeModule.CountOfLines
     Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 05:06 , Processed in 0.050694 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表