ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请问如何批量保存多个word文档最后一页

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-3-3 10:12 | 显示全部楼层 |阅读模式
求助。在一个文件夹下有多个子文件夹,每个子文件夹中有多个word文档,想单独保存每个word文档的最后一页,并删除新文档的表头、页码,新文件名与原文件保持一致。目前有100多个word文档,手动一个一个处理想想就觉得累人。新人小白求助各位

TA的精华主题

TA的得分主题

发表于 2022-3-3 20:09 | 显示全部楼层
本帖最后由 gbgbxgb 于 2022-3-4 18:14 编辑
  1. Sub my_DelPagesSaveAs()
  2.     Dim fs As Object, myPath$, thisDocumentName$
  3.     Dim myDoc As Document, myDocName$, theSaveFormat&, i&
  4.     '
  5.     Set fs = CreateObject("Scripting.FileSystemObject")
  6.     thisDocumentName = fs.getfilename(ThisDocument.FullName)
  7.     myPath = ThisDocument.Path
  8.     If Right(myPath, 1) <> "" Then myPath = myPath & ""
  9.     '
  10.     myDocName = Dir(myPath & "*.doc", vbDirectory)
  11.     Do While myDocName <> ""
  12.         If (GetAttr(myPath & myDocName) And vbDirectory) = 0 Then
  13.             If myDocName <> thisDocumentName Then
  14.                 Set myDoc = Documents.Open(myPath & myDocName)
  15.                 With myDoc
  16.                     i = .ActiveWindow.Panes(1).Pages.Count
  17.                     If i > 1 Then
  18.                         i = .ActiveWindow.Panes(1).Pages(i).Breaks(1).Range.Start
  19.                         On Error Resume Next
  20.                         .Range(0, i).Delete
  21.                         If Err <> 0 Then
  22.                             On Error GoTo 0
  23.                             MsgBox "当前文档“" & myDocName & "”无法删除页!", vbExclamation, "错误"
  24.                             DoEvents
  25.                             .Close False
  26.                         Else
  27.                             On Error GoTo 0
  28.                             theSaveFormat = .SaveFormat
  29.                             .SaveAs FileName:=myPath & myDocName, fileformat:=theSaveFormat
  30.                             .Close False
  31.                         End If
  32.                     Else
  33.                         .Close False
  34.                     End If
  35.                 End With
  36.             End If
  37.         End If
  38.         myDocName = Dir
  39.     Loop
  40.     Set fs = Nothing
  41.     Set myDoc = Nothing
  42. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-4 11:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢回复,但是代码运行后没反应,不知道是不是我操作有问题,我上传了附件,麻烦再帮忙调试一下,感谢,感谢!

散文.rar

78.58 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2022-3-4 18:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
和可 发表于 2022-3-4 11:27
感谢回复,但是代码运行后没反应,不知道是不是我操作有问题,我上传了附件,麻烦再帮忙调试一下,感 ...

前粘贴的代码句(第8行):
If Right(myPath, 1) <> "" Then myPath = myPath & ""
漏了斜杠,即你可修改如下再试试:
If Right(myPath, 1) <> "" Then myPath = myPath & "\"

另:删除页脚(亦或页眉?)的代码未写(因你当初未提供附件,不明确你的页眉或页脚情况)。

TA的精华主题

TA的得分主题

发表于 2022-3-4 18:22 | 显示全部楼层
本帖最后由 gbgbxgb 于 2022-3-4 19:31 编辑

发现使用网站提供的“粘贴代码”功能,粘贴代码后,有些字符缺失,现重新粘贴文本代码如下:
Sub my_DelPagesSaveAs()
    Dim fs As Object, myPath$, thisDocumentName$, i&
    Dim myDoc As Document, myDocName$, theSaveFormat&
    '
    Set fs = CreateObject("Scripting.FileSystemObject")
    thisDocumentName = fs.getfilename(ThisDocument.FullName)
    myPath = ThisDocument.Path
    If Right(myPath, 1) <> "" Then myPath = myPath & "\"
    '
    myDocName = Dir(myPath & "*.doc", vbDirectory)
    Do While myDocName <> ""
        If (GetAttr(myPath & myDocName) And vbDirectory) = 0 Then
            If myDocName <> thisDocumentName Then
                Set myDoc = Documents.Open(myPath & myDocName)
                With myDoc
                    i = .ActiveWindow.Panes(1).Pages.Count
                    If i > 1 Then
                        i = .ActiveWindow.Panes(1).Pages(i).Breaks(1).Range.Start
                        On Error Resume Next
                        .Range(0, i).Delete
                        If Err <> 0 Then
                            On Error GoTo 0
                            MsgBox "当前文档“" & myDocName & "”无法删除页!", vbExclamation, "错误"
                            DoEvents
                            .Close False
                        Else
                            On Error GoTo 0
                            .Sections(1).Footers(wdHeaderFooterPrimary).Range.Delete
                            theSaveFormat = .SaveFormat
                            .SaveAs FileName:=myPath & myDocName, fileformat:=theSaveFormat
                            .Close False
                        End If
                    Else
                        .Close False
                    End If
                End With
            End If
        End If
        myDocName = Dir
    Loop
The_Exit:
    Set fs = Nothing
    Set myDoc = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-7 08:18 | 显示全部楼层
gbgbxgb 发表于 2022-3-4 18:22
发现使用网站提供的“粘贴代码”功能,粘贴代码后,有些字符缺失,现重新粘贴文本代码如下:
Sub my_DelPa ...

太厉害了,运行完美,十分感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 08:24 , Processed in 0.037428 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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