ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 努牛

[求助] 遍历文件夹下所有word,执行固定的宏

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-11 07:42 | 显示全部楼层
本帖最后由 13907933959 于 2017-3-11 07:45 编辑
duquancai 发表于 2017-3-9 21:09
附件,打开文档,点击按钮》》》》》》》》

杜前辈好!
唉!菜鸟就是菜鸟,照着抄都不行,运行提示“编译错误:用户定义类型未定义”,看了多遍都不知抄错在那里,请前辈指点,谢谢!

Sub shishi()
    Dim nej As New Blclass, fol As Object, arr, a, doc As Document
    Setfol = CreateObject("Shell.Application").BrowseForFolder(0, "选取初始文件夹", 0)
    If Not fol Is Nothing Then pa$ = fol.Items.Item.Path Else MsgBox "选取目标文件夹": Exit Sub
    arr = nej.DirSK(pa, "*.doc*")
    For Each a In arr
        Set doc = Documents.Open(a, Visible:=False)
        With doc
            .Content.Font.Color = RGB(0, 0, 0)
            .Close -1, 1
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2017-3-11 10:04 | 显示全部楼层
13907933959 发表于 2017-3-11 07:42
杜前辈好!
唉!菜鸟就是菜鸟,照着抄都不行,运行提示“编译错误:用户定义类型未定义”,看了多遍都不 ...

杜前辈的我没看,我8楼有个代码,你可以参考一下。

TA的精华主题

TA的得分主题

发表于 2017-3-11 11:13 | 显示全部楼层
本帖最后由 13907933959 于 2017-3-11 12:13 编辑
jiminyanyan 发表于 2017-3-11 10:04
杜前辈的我没看,我8楼有个代码,你可以参考一下。

前辈好!
您8楼的代码我昨天也试了,不知什么原因,运行提示 “编译错误:‘5’ 无效的过程调用或参数”。
我是03版的office。

TA的精华主题

TA的得分主题

发表于 2017-3-11 11:14 | 显示全部楼层
本帖最后由 13907933959 于 2017-3-11 14:59 编辑
jiminyanyan 发表于 2017-3-11 10:04
杜前辈的我没看,我8楼有个代码,你可以参考一下。
前辈好!
测试您9楼的附件,代码运行一样提示 “编译错误:‘5’ 无效的过程调用或参数”。


TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-11 12:02 | 显示全部楼层
jiminyanyan 发表于 2017-3-9 20:26
借用DU老师的代码,写一个……。

大神,我运行也出现了“运行时错误'5':无效的过程调用或参数”。我是07版的office。

TA的精华主题

TA的得分主题

发表于 2017-3-11 13:04 | 显示全部楼层
努牛 发表于 2017-3-11 12:02
大神,我运行也出现了“运行时错误'5':无效的过程调用或参数”。我是07版的office。

9 楼有附件,我的是2010.……。

TA的精华主题

TA的得分主题

发表于 2017-3-11 16:39 | 显示全部楼层
本帖最后由 zhanglei1371 于 2017-3-13 20:52 编辑

真是够菜的,一个小问题拉了这么多层:
两种方案:
一、修改上面的代码(不完美)
  1. Sub 遍历所有文件夹中的文件()
  2.   Dim arr() As String, i&, k&, x&, f, f1$, oDoc As Document
  3.   Dim Osec As Section, Ohefo As HeaderFooter
  4.   Application.ScreenUpdating = False
  5.     With Application.FileDialog(msoFileDialogFolderPicker)
  6.         If .Show = False Then Exit Sub
  7.         ReDim Preserve arr(1)
  8.         arr(1) = .SelectedItems(1) & "\"
  9.     End With
  10.     i = 1: k = 1
  11.     Do While i < UBound(arr) + 1
  12.         If arr(i) = "" Then Exit Do
  13.         f = Dir(arr(i), vbDirectory)
  14.         Do While f <> ""
  15.             If InStr(f, ".") = 0 And f <> "" Then
  16.                 k = k + 1
  17.                 ReDim Preserve arr(k)
  18.                 arr(k) = arr(i) & f & "\"
  19.             End If
  20.             f = Dir
  21.         Loop
  22.         i = i + 1
  23.     Loop
  24.     For x = 1 To UBound(arr)
  25.         If arr(x) = "" Then Exit For
  26.         f1 = Dir(arr(x) & "*.doc*")
  27.         Do While f1 <> ""
  28.             Set oDoc = Documents.Open(arr(x) & f1, Visible:=True)
  29.             Selection.WholeStory
  30.             Selection.Font.Color = wdColorBlack
  31.             oDoc.Close True
  32.             Set oDoc = Nothing
  33.             f1 = Dir
  34.         Loop
  35.     Next x: Erase arr
  36.   Application.ScreenUpdating = True
  37. End Sub
复制代码


二、CMD方式:
  1. Sub CMD遍历处理文件()
  2.     Dim ws As Object, arr, fod
  3.     With Application.FileDialog(msoFileDialogFolderPicker)
  4.         If .Show <> -1 Then Exit Sub Else fod = .InitialFileName
  5.     End With
  6.     CreateObject("wscript.shell").Run "cmd /c dir " & Chr(34) & fod & "*.doc*" & Chr(34) & " /s /b /a:-d > C:\temdoc.txt", 0, True
  7.     Open "C:\temDoc.txt" For Input As #1 ’利用批处理dir命令生成临时文件列表于C盘;
复制代码
    Close #1 '关闭文件号为1的文件;
    VBA.Kill "c:\temdoc.txt" ’删除临时文件;
    arr = Filter(arr, "$", False, vbTextCompare)    '过滤掉word临时文件~$
    For Each f In arr
        If f <> "" Then
            '此处添加单个文档处理代码即可。
            
        End If
    Next
End Sub



ps:发帖后需要用双反斜杠才能显示,编辑后还可能乱码,看来还是发图片稳妥,无需审核。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-11 18:01 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2017-3-11 07:42
杜前辈好!
唉!菜鸟就是菜鸟,照着抄都不行,运行提示“编译错误:用户定义类型未定义”,看了多遍都不 ...

我提供的附件难道不能运行吗?又或者运行结果不对吗?附件中不是提供了运行按钮吗?点击按钮不行吗?

TA的精华主题

TA的得分主题

发表于 2017-3-12 06:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2017-3-16 11:18 编辑
duquancai 发表于 2017-3-11 18:01
我提供的附件难道不能运行吗?又或者运行结果不对吗?附件中不是提供了运行按钮吗?点击按钮不行吗?

杜前辈好!
我下载了您在10楼提供的带代码的压缩件,解压后点附件中的运行按钮,不知什么原因试了多次都没有反应,想看一下代码您又设置了密码。

TA的精华主题

TA的得分主题

发表于 2017-3-12 07:46 | 显示全部楼层
本帖最后由 13907933959 于 2017-3-12 08:30 编辑
zhanglei1371 发表于 2017-3-11 16:39
真是够菜的,一个小问题拉了这么多层:
两种方案:
一、修改上面的代码(不完美)

前辈好!
我运行试了第一个修改后代码,测试的文档上好像没有什么变化。
太菜了,第二个代码,不知怎样加上处理单个文档的代码,前辈能否示范一个?谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 12:35 , Processed in 0.036884 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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