VBA从Excel中包括页眉,页脚和脚注在Word中replace

我有一个Excel文件,我想要search – 通过Excel VBAmacrosreplace到Word文档中的一些数据。 有两列:一列是我要查找的内容,另一列是replace文本。 这工作正常。

问题是,我想要replace头部,脚手架,脚印和注释。 我已经尝试了一些代码与互联网的东西,但它不履行其使命…任何帮助?

Sub ReplacetoWord() Dim rngStory As Word.Range Dim lngJunk As Long Dim oShp As Shape Dim name_book As String Dim x As Variant Dim Filename As String Dim wArch As String name_book = ThisWorkbook.FullName x = Split(name_book, Application.PathSeparator) Filename = x(UBound(x)) Sheets("Generate_Report").Select wArch = Range("C3").Text & Range("C2").Text & ".docx" Set objWord = CreateObject("Word.Application") objWord.Documents.Open wArch objWord.Visible = True Workbooks(Filename).Activate Worksheets("Generate_Report").Select 'Fix the skipped blank Header/Footer problem lngJunk = ActiveDocument.Sections(1).Headers(1).Range.StoryType For i = 1 To Range("I1").Value 'cell with the number of data to replace Workbooks(Filename).Activate Worksheets("Generate_Report").Select datos = Range("B" & i).Text 'what to look for reemp = Range("A" & i).Text 'what to replace with For Each rngStory In ActiveDocument.StoryRanges 'Iterate through all linked stories Do With objWord.Selection.Find .Text = datos .Replacement.Text = reemp .Wrap = wdFindContinue .Execute Replace:=wdReplaceAll End With On Error Resume Next Select Case rngStory.StoryType Case 6, 7, 8, 9, 10, 11 If rngStory.ShapeRange.count > 0 Then For Each oShp In rngStory.ShapeRange If oShp.TextFrame.HasText Then With objWord.Selection.Find .Text = datos .Replacement.Text = reemp .Wrap = wdFindContinue .Execute Replace:=wdReplaceAll End With End If Next End If Case Else 'Do Nothing End Select On Error GoTo 0 'Get next linked story (if any) Set rngStory = rngStory.NextStoryRange Loop Until rngStory Is Nothing Next Next i objWord.Activate End Sub 

使用Footnotes集合。

 foreach (Microsoft.Office.Interop.Word.Footnote footnote in word.ActiveDocument.Footnotes) { Microsoft.Office.Interop.Word.Range range = footnote.Range; range.Find.Text = "find me"; range.Find.MatchWholeWord = true; range.Find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); if (range.Find.Found == true) { // Whatever you need to do. } }