论坛启用新域名www.gzhucm.com,请继续支持我们
切换到宽版
  • 2498阅读
  • 0回复

利用VBA批量删除文件夹里面所有word文件中的页眉、页脚、页码 [复制链接]

上一主题 下一主题
离线yuze1981
 
只看楼主 倒序阅读 0  发表于: 2014-10-22
网上的VBA只支持word2003,这里参照修改了一下,经测试word 2010有效

首先打开一个任意word文档,视图--宏--查看宏
创建一个,在代码窗黏贴下面代码

  1. Sub 批量删除文件夹里面所有Word文档的页眉页脚()
  2. Dim Fdlg As FileDialog, Fl
  3. Dim Fso, Fld, Fln, Wk
  4. Set Fdlg = Application.FileDialog(msoFileDialogFolderPicker)
  5. With Fdlg
  6.      .Title = "选择要处理目标文件夹" & "——(删除里面所有Word文档的页眉页脚)"
  7.         If .Show = -1 Then
  8.           MyPath = .SelectedItems(1)
  9.         Else
  10.           Exit Sub
  11.     End If
  12.   End With
  13. Set Fso = CreateObject("Scripting.FileSystemObject")
  14. Set Fld = Fso.GetFolder(MyPath)
  15. Set Fln = Fld.Files
  16. For Each Wk In Fln
  17.     Set myDoc = Documents.Open(FileName:=Fld & "\" & Wk.Name)
  18. If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
  19.         ActiveWindow.Panes(2).Close
  20.     End If
  21.     If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
  22.         ActivePane.View.Type = wdOutlineView Then
  23.         ActiveWindow.ActivePane.View.Type = wdPrintView
  24.     End If
  25.     ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
  26.     Selection.WholeStory
  27.     Selection.Delete Unit:=wdCharacter, Count:=1
  28.     Selection.WholeStory
  29.     With Selection.ParagraphFormat
  30.         .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
  31.         .Borders(wdBorderRight).LineStyle = wdLineStyleNone
  32.         .Borders(wdBorderTop).LineStyle = wdLineStyleNone
  33.         .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  34.         With .Borders
  35.             .DistanceFromTop = 1
  36.             .DistanceFromLeft = 4
  37.             .DistanceFromBottom = 1
  38.             .DistanceFromRight = 4
  39.             .Shadow = False
  40.         End With
  41.     End With
  42.     With Options
  43.         .DefaultBorderLineStyle = wdLineStyleSingle
  44.         .DefaultBorderLineWidth = wdLineWidth075pt
  45.         .DefaultBorderColor = wdColorAutomatic
  46.     End With
  47.     If Selection.HeaderFooter.IsHeader = True Then
  48.         ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
  49.     Else
  50.         ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
  51.     End If
  52.     Selection.WholeStory
  53.     Selection.Delete Unit:=wdCharacter, Count:=1
  54.     ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  55.     Selection.Sections(1).Footers(1).PageNumbers.Add PageNumberAlignment:= _
  56.         wdAlignPageNumberRight, FirstPage:=True
  57. ' 以上可以换成是你自己录制的宏
  58. ' C公共部分的代码
  59. Application.DisplayAlerts = False '强制执行“是”
  60. 'ActiveDocument.Saved = True'强制执行“否”
  61. ActiveDocument.Close '退出
  62. Next
  63. End Sub


成功