找回密码
 立即注册
搜索
查看: 2073|回复: 11

[软件] 批量修改word,excel页眉页脚内容求助

[复制链接]
     
发表于 2017-12-29 14:03 | 显示全部楼层 |阅读模式
有几千个文档资料需要批量修改页眉页脚里的部分内容,找了一大堆各种软件测试。只有WordPipe能够满足需求,一看注册价格99刀怂了,也没找到破解版。
然后去找vba脚本。有个能用但只能修改页脚内容。
实在没办法只能是求助泥潭大佬了

求个能批量修改页眉页脚内容的软件,或者能看看这VBA要改什么地方才能让页眉也在范围内。

VBA

功能示例:

有很多个doc文档,页脚的电话变了,如原电话是4007339339,现在变成4007168339了,要实现批量替换,可使用此程序。


使用说明:

1 复制下面程序代码到VBA里后,点“工具”-“宏”-“宏”-“change”-“运行”

2 输入目录(不要输入根目录,要不速度会很慢)

3 输入要查找的内容

4 输入的替换成你要的内容

--------------------------------------------

'下面是程序代码,复制到WordVBA



'此子程序放在Word对象里
Option Explicit
Sub change()

     Dim s As String
Dim wb As Object
Dim i As Long
Dim load As String
Dim find As String
Dim change As String


load = InputBox("输入要修改页脚的文件夹路径,自动扫描子文件夹-------------垃圾桶丁2009-3-8")   '要变更的目录
find = InputBox("输入要查找的页脚内容")   '查找的内容
change = InputBox("请问要替换成什么内容?") '替换的内容


Set wb = Application.FileSearch
   With wb
       .NewSearch
       .LookIn = load
       .SearchSubFolders = True
       .FileName = "*.doc"
       .FileType = msoFileTypeExcelWorkbooks
        If .Execute() > 0 Then
           For i = 1 To .FoundFiles.Count
                On Error Resume Next
           s = .FoundFiles(i)

           Call Macro1(s, find, change)
            Next i
       End If
    End With
End Sub


'此子程序放在模块里

Option Explicit
Sub Macro1(s As String, find As String,change As String)


   Documents.Open FileName:=s, ConfirmConversions:=False, _
       ReadOnly:=False, AddToRecentFiles:=False,PasswordDocument:="", _
       PasswordTemplate:="", Revert:=False,WritePasswordDocument:="", _
       WritePasswordTemplate:="", Format:=wdOpenFormatAuto,XMLTransform:=""
   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
   Selection.find.ClearFormatting
    Selection.find.Replacement.ClearFormatting
   With Selection.find
       .Text = find '查找的内容
       .Replacement.Text = change '替换的内容
       .Forward = True
       .Wrap = wdFindContinue
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchByte = True
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
   End With
   Selection.find.Execute Replace:=wdReplaceAll
   ActiveWindow.Close (wdSaveChanges)
End Sub



回复

使用道具 举报

头像被屏蔽
     
发表于 2017-12-29 14:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2017-12-29 14:49 | 显示全部楼层
Geminize 发表于 2017-12-29 14:45
docx的话,试试扩展名改zip,用WinRAR全部解压到单独的目录,用UltraEdit按Ctrl+Shift+P指定上一级目录,文 ...

感谢,悲剧的是...都是doc的文档

页眉页脚很多小工具不支持或者是简单粗暴的新建,不能只修改部分内容相当蛋疼。
回复

使用道具 举报

头像被屏蔽
     
发表于 2017-12-29 14:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2017-12-29 16:05 | 显示全部楼层
这个不难啊……楼主你贴的VBA是能够扫描页眉页脚的,VBA里已经做了判断了
  1.    If Selection.HeaderFooter.IsHeader = True Then
  2.        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
  3.    Else
  4.        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
  5.    End If
复制代码

上面这段就是,你说页眉改不了,那还是提供一个样本doc文件给我分析一下原因
回复

使用道具 举报

     
发表于 2017-12-29 16:34 | 显示全部楼层
好了不用了,我知道问题在哪了,写这代码的人比我这半吊子还水,照抄的word F1。懒得从头写了,给你个更丑陋但应该能用的
  1. '此子程序放在模块里

  2. Option Explicit
  3. Sub Macro1(s As String, find As String,change As String)


  4.    Documents.Open FileName:=s, ConfirmConversions:=False, _
  5.        ReadOnly:=False, AddToRecentFiles:=False,PasswordDocument:="", _
  6.        PasswordTemplate:="", Revert:=False,WritePasswordDocument:="", _
  7.        WritePasswordTemplate:="", Format:=wdOpenFormatAuto,XMLTransform:=""
  8.    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
  9.        ActiveWindow.Panes(2).Close
  10.    End If
  11.    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
  12.        ActivePane.View.Type = wdOutlineView Then
  13.        ActiveWindow.ActivePane.View.Type = wdPrintView
  14.    End If
  15.    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
  16.    Selection.find.ClearFormatting
  17.     Selection.find.Replacement.ClearFormatting
  18.    With Selection.find
  19.        .Text = find '查找的内容
  20.        .Replacement.Text = change '替换的内容
  21.        .Forward = True
  22.        .Wrap = wdFindContinue
  23.        .Format = False
  24.        .MatchCase = False
  25.        .MatchWholeWord = False
  26.        .MatchByte = True
  27.        .MatchWildcards = False
  28.        .MatchSoundsLike = False
  29.        .MatchAllWordForms = False
  30.    End With
  31.    Selection.find.Execute Replace:=wdReplaceAll

  32. ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
  33.    Selection.find.ClearFormatting
  34.     Selection.find.Replacement.ClearFormatting
  35.    With Selection.find
  36.        .Text = find '查找的内容
  37.        .Replacement.Text = change '替换的内容
  38.        .Forward = True
  39.        .Wrap = wdFindContinue
  40.        .Format = False
  41.        .MatchCase = False
  42.        .MatchWholeWord = False
  43.        .MatchByte = True
  44.        .MatchWildcards = False
  45.        .MatchSoundsLike = False
  46.        .MatchAllWordForms = False
  47.    End With
  48.    Selection.find.Execute Replace:=wdReplaceAll


  49.    ActiveWindow.Close (wdSaveChanges)
  50. End Sub
复制代码
回复

使用道具 举报

     
发表于 2017-12-30 04:10 | 显示全部楼层
知道会编程的好了吧,能解析doc xlsl的库有的是,随便写几行就能完成你的需求了。

上面那个vba的代码看的都要吐血...
回复

使用道具 举报

     
发表于 2017-12-30 08:58 来自手机 | 显示全部楼层
虽然我不懂,但是,我觉得
python应该很擅长处理这种问题


—— 来自 OnePlus ONEPLUS A5000, Android 7.1.1上的 S1Next-鹅版 v1.3.2.1-fix-play
回复

使用道具 举报

     
 楼主| 发表于 2017-12-30 20:30 | 显示全部楼层
绕指流光 发表于 2017-12-29 16:34
好了不用了,我知道问题在哪了,写这代码的人比我这半吊子还水,照抄的word F1。懒得从头写了,给你个更丑 ...

谢大大,能用就行。
回复

使用道具 举报

     
 楼主| 发表于 2017-12-30 20:31 | 显示全部楼层
BRRM 发表于 2017-12-30 04:10
知道会编程的好了吧,能解析doc xlsl的库有的是,随便写几行就能完成你的需求了。

上面那个vba的代码看的 ...

确实=。= ,超能力是第一生产力
回复

使用道具 举报

     
发表于 2017-12-30 22:32 | 显示全部楼层
BRRM 发表于 2017-12-30 04:10
知道会编程的好了吧,能解析doc xlsl的库有的是,随便写几行就能完成你的需求了。

上面那个vba的代码看的 ...

讲道理,上面的VBA代码要是会写的人来写,也是几行而已.还不用搭运行环境
回复

使用道具 举报

     
发表于 2017-12-31 00:41 | 显示全部楼层
schneehertz 发表于 2017-12-30 22:32
讲道理,上面的VBA代码要是会写的人来写,也是几行而已.还不用搭运行环境

你说的会写的人不就是我说“会编程”的人了吗...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-15 16:52 , Processed in 0.061846 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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