以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  vba查找替换页眉中所有指定字符  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175673)

--  作者:xluoping
--  发布时间:2022/3/15 9:46:00
--  vba查找替换页眉中所有指定字符
     需要查找所有页面的页眉中的“"[检测项目]"” ,然后替换为 dr("检测项目"),如何写代码?

请求帮助图片点击可在新窗口打开查看

  If app.ActiveWindow.Selection.Find.Execute("[检测项目]")  Then
            app.ActiveWindow.Selection.TypeText(Text:=dr("检测项目"))
        End If

--  作者:有点蓝
--  发布时间:2022/3/15 9:59:00
--  
    app.Selection.Find.Text = "[检测项目]"
    app.Selection.Find.Replacement.ClearFormatting()
    app.Selection.Find.Replacement.Text = dr("检测项目")
    app.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)

--  作者:xluoping
--  发布时间:2022/3/15 10:36:00
--  


老师你提供的代码,正文中的可以替换,但是不能替换 页眉  里的字符
--  作者:有点蓝
--  发布时间:2022/3/15 10:46:00
--  
设置为页眉编辑模式


For Each oSec As object In doc.Sections    \'文档的节中循环
            Dim myRange = oSec.Headers(MSWord.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range
    myRange .Selection.Find.Text = "[检测项目]"
    myRange .Selection.Find.Replacement.ClearFormatting()
    myRange .Selection.Find.Replacement.Text = dr("检测项目")
    myRange .Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)
        Next

--  作者:xluoping
--  发布时间:2022/3/15 10:51:00
--  
         app.ActiveWindow.ActivePane.View.SeekView = MSWord.WdSeekView.wdSeekCurrentPageHeader
         app.ActiveWindow.Selection.WholeStory
    app.Selection.Find.Text = "[检测项目]"
    app.Selection.Find.Replacement.ClearFormatting()
    app.Selection.Find.Replacement.Text = dr("检测项目")
    app.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)


这样可以,谢谢啦!

--  作者:xluoping
--  发布时间:2022/3/15 12:32:00
--  
For Each oSec As object In doc.Sections    \'文档的节中循环


如果有多节,那么第二节开始就不能替换了!

--  作者:xluoping
--  发布时间:2022/3/15 12:33:00
--  
还有就是 文本框里的 不能替换,只能替换段落中的


--  作者:有点蓝
--  发布时间:2022/3/15 13:35:00
--  
以下是引用xluoping在2022/3/15 12:32:00的发言:
For Each oSec As object In doc.Sections    \'文档的节中循环


如果有多节,那么第二节开始就不能替换了!

4楼就是按节处理的
--  作者:有点蓝
--  发布时间:2022/3/15 13:35:00
--  
以下是引用xluoping在2022/3/15 12:33:00的发言:
还有就是 文本框里的 不能替换,只能替换段落中的

这个我也不懂了
--  作者:xluoping
--  发布时间:2022/3/15 15:26:00
--  
    For Each oSec As object In doc.Sections     \'文档的节中循环
        oSec.Range.Select       \'加上这个所有节的页眉都能替换
        app.ActiveWindow.ActivePane.View.SeekView = MSWord.WdSeekView.wdSeekCurrentPageHeader
        app.ActiveWindow.Selection.WholeStory
        app.Selection.Find.Execute(FindText:="[表名]", replacewith:=flbm, Replace:=2)
        app.Selection.Find.Execute(FindText:="[编号]", replacewith:=ddb("窗口"), Replace:=2)
        app.Selection.Find.Execute(FindText:="[机构名]", replacewith:=DataTables("机构").GetComboListString("机构名称","_Identify = " & Vars("jigou_id")), Replace:=2)
    Next