ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 能否用以下代码,批量操作n个word文档

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-1 10:55 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能否用以下代码,批量操作n个word文档

也是执行这段代码,弹出选择窗口,能全选文件夹内的所有word文档,执行代码。

Sub 插页码边距()
'
' 插页码边距 Macro
' 宏在 2018-4-1 由 - 录制
'
    With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints(1)
        .BottomMargin = CentimetersToPoints(1)
        .LeftMargin = CentimetersToPoints(1)
        .RightMargin = CentimetersToPoints(1)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(1.5)
        .FooterDistance = CentimetersToPoints(1.5)
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
        .LayoutMode = wdLayoutModeLineGrid
    End With
    Selection.WholeStory
    Selection.ParagraphFormat.LineSpacing = LinesToPoints(1)
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    If Selection.HeaderFooter.IsHeader = True Then
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Else
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    End If
    NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection. _
        Range, RichText:=True
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

TA的精华主题

TA的得分主题

发表于 2018-4-1 20:40 | 显示全部楼层
楼主,请试试下面的代码(仅对2003版有效):
  1. Sub aaaa循环遍历文件夹_插页码边距()
  2.     On Error Resume Next
  3.     Dim fd As FileDialog, i&, doc As Document, p$
  4.     MsgBox "请双击进入文件夹,直到进入最终要处理的文件夹,确定即可!", vbOKOnly + vbExclamation
  5.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  6.     If fd.Show = -1 Then p = fd.SelectedItems(1) Else Exit Sub
  7.     Set fd = Nothing
  8.     If MsgBox("是否处理文件夹 " & p & " ?", 4 + 48) = vbNo Then Exit Sub
  9.     With Application.FileSearch
  10.         .NewSearch
  11.         .LookIn = p
  12.         .SearchSubFolders = True
  13.         .FileName = "*.doc"
  14.         If .Execute > 0 Then
  15.             For i = 1 To .FoundFiles.Count
  16.                 Set doc = Documents.Open(FileName:=.FoundFiles(i)) '打开文档
  17.                 插页码边距 '引用宏名/设置文档格式
  18.                 doc.Close savechanges:=wdSaveChanges '保存退出
  19.             Next i
  20.             MsgBox "处理完毕!共处理 " & .FoundFiles.Count & " 个文件!", 0 + 48
  21.         Else
  22.             MsgBox "未发现文件!", 0 + 16
  23.         End If
  24.     End With
  25. End Sub
  26. Sub 插页码边距()
  27.     On Error Resume Next
  28.     With ActiveDocument.PageSetup
  29.         .LineNumbering.Active = False
  30.         .Orientation = wdOrientPortrait
  31.         .TopMargin = CentimetersToPoints(1)
  32.         .BottomMargin = CentimetersToPoints(1)
  33.         .LeftMargin = CentimetersToPoints(1)
  34.         .RightMargin = CentimetersToPoints(1)
  35.         .Gutter = CentimetersToPoints(0)
  36.         .HeaderDistance = CentimetersToPoints(1.5)
  37.         .FooterDistance = CentimetersToPoints(1.5)
  38.         .PageWidth = CentimetersToPoints(21)
  39.         .PageHeight = CentimetersToPoints(29.7)
  40.         .FirstPageTray = wdPrinterDefaultBin
  41.         .OtherPagesTray = wdPrinterDefaultBin
  42.         .SectionStart = wdSectionNewPage
  43.         .OddAndEvenPagesHeaderFooter = False
  44.         .DifferentFirstPageHeaderFooter = False
  45.         .VerticalAlignment = wdAlignVerticalTop
  46.         .SuppressEndnotes = False
  47.         .MirrorMargins = False
  48.         .TwoPagesOnOne = False
  49.         .BookFoldPrinting = False
  50.         .BookFoldRevPrinting = False
  51.         .BookFoldPrintingSheets = 1
  52.         .GutterPos = wdGutterPosLeft
  53.         .LayoutMode = wdLayoutModeLineGrid
  54.     End With
  55.     Selection.WholeStory
  56.     Selection.ParagraphFormat.Space1
  57.     ActiveDocument.StoryRanges(wdPrimaryFooterStory).Frames(1).Cut '删除页码
  58.     ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter '插入页码
  59.     Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  60.     NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection.Range, RichText:=True
  61.     ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  62. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 05:04 , Processed in 0.035753 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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