从 Excel table 填充单词 tables
Populate word tables from an Excel table
从我们的审计数据库中,我得出如下所示的 Excel table。我需要做的是用 excel table 中第一行的内容填充 word 模板文档中的 table,然后删除几行并有一个新的 table 与第一个相同,但填充了 excel table 中第二行的内容,依此类推,直到到达 Excel table 的末尾].
我知道如何使用 Word 书签从 Excel 填充一个 Word table,但我不确定如何进行这种循环,并在每个 table 之后删除行.
任何让我走上正轨的提示都将不胜感激。
我目前编写的代码如下,它虽然复制了书签中的整个 table,但没有像我希望的那样将每一行都复制到一个单独的 table 中。
'Starting to generate the report in MsWord
Sheets("Data Table").Select
Set wdApp = New Word.Application
uName = Environ("Username")
fName = "C:\Users\" & uName & "\Form Templates\Custom Reports\Draft
Report Template\Template.dotx"
With wdApp
.Visible = True
'.Activate
.Documents.Open fName, , ReadOnly
Sheets("Main Body of the Report").Select
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Range("D4:" & "E" & ActiveCell.Row).Select 'main body of the report
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "MainBody"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = "Observations: "
.Replacement.Text = "Observations:^t^t^t^t^t^t^t^t^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
End With
我自己有 self-resolved 问题。也许不是我最初想要的方式,但它有效并且满足了我们的需求。下面是完整代码。我最终在 Excel 中生成了表格,并将它们复制到 word 中并进行了一些格式化。
Sub RefreshData_Click()
Dim pvtTbl As PivotTable, aCell As String, rng As String, Cell As Range, vSortList As Variant, PT As PivotTable, wdApp As Word.Application, fName As String, uName As String, StartCell As Range, myList As Range, Y As Range, X As Range
'Data refresh based on project code
ActiveWorkbook.RefreshAll
'Generating various pivot tables with lists of recommendations, annex II, annex of low risk issues, main body of the report
Sheets("Main Body of the Report").Select
Range("D1").Select
Selection.End(xlDown).Select
Range("A1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("A4:A" & rNumber)
For Each X In myList
If X.Font.Bold = True Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 11) = "Background:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With Range("D" & ActiveCell.Row)
.Characters(Start:=1, Length:=11).Font.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 14) = "Residual risk:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
Range("D" & ActiveCell.Row).Font.Bold = True
Range("D" & ActiveCell.Row).Cells.HorizontalAlignment = xlHAlignJustify
Range("D" & ActiveCell.Row).Value = "Observations: " & Range("D" & ActiveCell.Row).Value
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 12) = "Observation:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Observation: ", Replacement:=""
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 7) = "Impact:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With ActiveCell.Characters(Start:=1, Length:=7)
.Font.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 6) = "Cause:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With ActiveCell.Characters(Start:=1, Length:=6).Font
.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 15) = "Recommendation:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Recommendation: ", Replacement:="Recommendations:" & Chr(10) & Chr(10)
ActiveCell.Font.Bold = True
ActiveCell.BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 9) = "Priority:" Then
X.Select
X.Copy
Range("E" & ActiveCell.Row - 1).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Priority: ", Replacement:="Priority:" & Chr(10) & Chr(10)
ActiveCell.Font.Bold = True
ActiveCell.BorderAround LineStyle:=xlContinuous, Weight:=xlThin
ActiveCell.HorizontalAlignment = xlCenter
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If X.Value = "" Then
X.Select
Range(X.Address & ":E" & ActiveCell.Row).Delete Shift:=xlUp
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If X.Value = "" Then
X.Select
Range(X.Address & ":E" & ActiveCell.Row).Delete Shift:=xlUp
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If Left(X, 17) = "Recommendations:" & Chr(10) Then
X.Select
If Left(Range("D" & ActiveCell.Row + 1).Value, 17) = "Recommendations:" & Chr(10) Then
Range("D" & ActiveCell.Row + 1).Value = Mid(Range("D" & ActiveCell.Row + 1).Value, 19, Len(Range("D" & ActiveCell.Row + 1).Value) - 18)
End If
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("E4:E" & rNumber)
For Each X In myList
If Left(X, 10) = "Priority:" & Chr(10) Then
X.Select
If Left(Range("E" & ActiveCell.Row + 1).Value, 10) = "Priority:" & Chr(10) Then
Range("E" & ActiveCell.Row + 1).Value = Mid(Range("E" & ActiveCell.Row + 1).Value, 12, Len(Range("E" & ActiveCell.Row + 1).Value) - 11)
Range("D" & ActiveCell.Row + 2 & ":E" & ActiveCell.Row + 2).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D" & ActiveCell.Row).Value = "Management Response"
Range("D" & ActiveCell.Row).HorizontalAlignment = xlCenter
Range("D" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("D" & ActiveCell.Row).Interior.Color = 14277081
Range("D" & ActiveCell.Row).Font.Bold = True
Range("E" & ActiveCell.Row).Value = "Target Implementation Date"
Range("E" & ActiveCell.Row).HorizontalAlignment = xlCenter
Range("E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("E" & ActiveCell.Row).Interior.Color = 14277081
Range("E" & ActiveCell.Row).Font.Bold = True
Range("D" & ActiveCell.Row + 1 & ":E" & ActiveCell.Row + 1).Select
Selection.Insert Shift:=xlDown
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End If
Next
Sheets("Annex II").Select
Range("C4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Ineffective"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Effective"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("D4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""High"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Low"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Moderate"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
'Starting to generate the report in MsWord
Sheets("Data Table").Select
Set wdApp = New Word.Application
uName = Environ("Username")
fName = "C:\Users\" & uName & "\World Health Organization\IOS Internal Audit - Form Templates\TeamMate Custom Reports\Draft Report Template\IOS Excel Utility\IOS Template.dotx"
With wdApp
.Visible = True
.Documents.Open fName, , ReadOnly
Range("A2").Copy 'audit code
.Selection.Goto wdGoToBookmark, , , "AuditCodeP1"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeP2"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAI"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAIII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAIV"
.Selection.PasteSpecial , , , , wdPasteText
Range("C6").Copy 'audit title
.Selection.Goto wdGoToBookmark, , , "AuditTitleP1"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleP2"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAI"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAIII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAIV"
.Selection.PasteSpecial , , , , wdPasteText
If Len(Range("H6")) > 0 Then
Range("H6").Copy 'executive summary
.Selection.Goto wdGoToBookmark, , , "ExecutiveSummary"
.Selection.PasteSpecial , , , , wdPasteText
End If
Sheets("Table of Recommendations").Select
Range("A3").Select 'table of recommendations
Range(Selection, Selection.End(xlToRight)).Select 'table of recommendations
Range(Selection, Selection.End(xlDown)).Select 'table of recommendations
Application.CutCopyMode = False
Selection.Copy
Range("H3").Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
'merging and centering the bold lines
Range("H4").Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Select
Range(Selection, Selection.End(xlDown)).Select
Set StartCell = Range("H4")
Set myList = Range("H4:H" & Range("H" & Rows.Count).End(xlUp).Row)
For Each X In myList
If X.Font.Bold = True Then
X.Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Merge
End If
Next
Range("H3").Select 'table of recommendations into the word document.
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="(blank)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "TableOfRecommendations"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Range("H3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlToLeft
Sheets("Data Table").Select
If Len(Range("G6")) > 0 Then
Range("G6").Copy 'introduction
.Selection.Goto wdGoToBookmark, , , "Introduction"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("F6")) > 0 Then
Range("F6").Copy 'objective, scope, and approach
.Selection.Goto wdGoToBookmark, , , "ObjectiveScopeApproach"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("I6")) > 0 Then
Range("I6").Copy 'audit conclusion
.Selection.Goto wdGoToBookmark, , , "AuditConclusion"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("H6")) > 0 Then
Range("I6").Copy 'good practices
.Selection.Goto wdGoToBookmark, , , "GoodPractices"
.Selection.PasteSpecial , , , , wdPasteText
End If
Sheets("Annex II").Select
Range("A3").Select 'annex II
Range(Selection, Selection.End(xlToRight)).Select 'annex II
Range(Selection, Selection.End(xlDown)).Select 'annex II
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "AnnexII"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Sheets("Annex of Low Risk Recs").Select
Range("A3").Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlToRight)).Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlDown)).Select 'Annex of Low Risk Recs
Application.CutCopyMode = False
Selection.Copy
Range("D3").Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
'merging and centering the bold lines
Range("D3").Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 1)).Select
Range(Selection, Selection.End(xlDown)).Select
Set StartCell = Range("D4")
Set myList = Range("D4:D" & Range("D" & Rows.Count).End(xlUp).Row)
For Each Y In myList
If Y.Font.Bold = True Then
Y.Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 1)).Merge
End If
Next
Range("D3").Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="(blank)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "AnnexIII"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Range("D3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlToLeft
Sheets("Main Body of the Report").Select
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Range("D4:" & "E" & ActiveCell.Row).Select 'main body of the report
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "MainBody"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = "Observations: "
.Replacement.Text = "Observations:^t^t^t^t^t^t^t^t^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
Sheets("Main Body of the Report").Select
Columns("D:E").Select
Selection.Clear
'Start from the top of the document
wdApp.Selection.HomeKey wdStory
sFindText = "|H1|"
wdApp.Selection.Find.Execute sFindText
Do Until wdApp.Selection.Find.Found = False
wdApp.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
wdApp.Selection.Style = ActiveDocument.Styles("Heading 1")
wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
wdApp.Selection.ParagraphFormat.Space1
wdApp.Selection.ParagraphFormat.SpaceBefore = 12
wdApp.Selection.MoveRight
wdApp.Selection.Find.Execute
Loop
wdApp.Selection.HomeKey wdStory
sFindText = "|H2|"
wdApp.Selection.Find.Execute sFindText
Do Until wdApp.Selection.Find.Found = False
wdApp.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
wdApp.Selection.Style = ActiveDocument.Styles("Heading 2")
wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
wdApp.Selection.ParagraphFormat.Space1
wdApp.Selection.ParagraphFormat.SpaceAfter = 12
wdApp.Selection.ParagraphFormat.SpaceBefore = 12
wdApp.Selection.MoveRight
wdApp.Selection.Find.Execute
Loop
wdApp.Selection.HomeKey wdStory
wdApp.Selection.Find.ClearFormatting
wdApp.Selection.Find.Replacement.ClearFormatting
With wdApp.Selection.Find
.Text = "|H1|"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdApp.Selection.Find.Execute Replace:=wdReplaceAll
With wdApp.Selection.Find
.Text = "|H2|"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdApp.Selection.Find.Execute Replace:=wdReplaceAll
End With
For Each sht In Application.Worksheets
sht.Sort.SortFields.Clear
Next sht
Set xlApp = Excel.Application
With xlApp
.Visible = True
Sheets("Data Table").Select
Range("A2").Select
MsgBox "Report generated corectly in Ms Word. You may now close the Excel file.", vbOKOnly, "Good news!"
End With
End Sub
从我们的审计数据库中,我得出如下所示的 Excel table。我需要做的是用 excel table 中第一行的内容填充 word 模板文档中的 table,然后删除几行并有一个新的 table 与第一个相同,但填充了 excel table 中第二行的内容,依此类推,直到到达 Excel table 的末尾].
我知道如何使用 Word 书签从 Excel 填充一个 Word table,但我不确定如何进行这种循环,并在每个 table 之后删除行.
任何让我走上正轨的提示都将不胜感激。
我目前编写的代码如下,它虽然复制了书签中的整个 table,但没有像我希望的那样将每一行都复制到一个单独的 table 中。
'Starting to generate the report in MsWord
Sheets("Data Table").Select
Set wdApp = New Word.Application
uName = Environ("Username")
fName = "C:\Users\" & uName & "\Form Templates\Custom Reports\Draft
Report Template\Template.dotx"
With wdApp
.Visible = True
'.Activate
.Documents.Open fName, , ReadOnly
Sheets("Main Body of the Report").Select
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Range("D4:" & "E" & ActiveCell.Row).Select 'main body of the report
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "MainBody"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = "Observations: "
.Replacement.Text = "Observations:^t^t^t^t^t^t^t^t^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
End With
我自己有 self-resolved 问题。也许不是我最初想要的方式,但它有效并且满足了我们的需求。下面是完整代码。我最终在 Excel 中生成了表格,并将它们复制到 word 中并进行了一些格式化。
Sub RefreshData_Click()
Dim pvtTbl As PivotTable, aCell As String, rng As String, Cell As Range, vSortList As Variant, PT As PivotTable, wdApp As Word.Application, fName As String, uName As String, StartCell As Range, myList As Range, Y As Range, X As Range
'Data refresh based on project code
ActiveWorkbook.RefreshAll
'Generating various pivot tables with lists of recommendations, annex II, annex of low risk issues, main body of the report
Sheets("Main Body of the Report").Select
Range("D1").Select
Selection.End(xlDown).Select
Range("A1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("A4:A" & rNumber)
For Each X In myList
If X.Font.Bold = True Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 11) = "Background:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With Range("D" & ActiveCell.Row)
.Characters(Start:=1, Length:=11).Font.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 14) = "Residual risk:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
Range("D" & ActiveCell.Row).Font.Bold = True
Range("D" & ActiveCell.Row).Cells.HorizontalAlignment = xlHAlignJustify
Range("D" & ActiveCell.Row).Value = "Observations: " & Range("D" & ActiveCell.Row).Value
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 12) = "Observation:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Observation: ", Replacement:=""
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 7) = "Impact:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With ActiveCell.Characters(Start:=1, Length:=7)
.Font.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 6) = "Cause:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
With ActiveCell.Characters(Start:=1, Length:=6).Font
.Bold = True
End With
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Merge
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 15) = "Recommendation:" Then
X.Select
X.Copy
Range("D" & ActiveCell.Row).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Recommendation: ", Replacement:="Recommendations:" & Chr(10) & Chr(10)
ActiveCell.Font.Bold = True
ActiveCell.BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("A" & ActiveCell.Row).Select
End If
Next
For Each X In myList
If Left(X, 9) = "Priority:" Then
X.Select
X.Copy
Range("E" & ActiveCell.Row - 1).Select
ActiveSheet.Paste
ActiveCell.Replace What:="Priority: ", Replacement:="Priority:" & Chr(10) & Chr(10)
ActiveCell.Font.Bold = True
ActiveCell.BorderAround LineStyle:=xlContinuous, Weight:=xlThin
ActiveCell.HorizontalAlignment = xlCenter
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If X.Value = "" Then
X.Select
Range(X.Address & ":E" & ActiveCell.Row).Delete Shift:=xlUp
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If X.Value = "" Then
X.Select
Range(X.Address & ":E" & ActiveCell.Row).Delete Shift:=xlUp
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("D1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("D4:D" & rNumber)
For Each X In myList
If Left(X, 17) = "Recommendations:" & Chr(10) Then
X.Select
If Left(Range("D" & ActiveCell.Row + 1).Value, 17) = "Recommendations:" & Chr(10) Then
Range("D" & ActiveCell.Row + 1).Value = Mid(Range("D" & ActiveCell.Row + 1).Value, 19, Len(Range("D" & ActiveCell.Row + 1).Value) - 18)
End If
End If
Next
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Set myList = Range("E4:E" & rNumber)
For Each X In myList
If Left(X, 10) = "Priority:" & Chr(10) Then
X.Select
If Left(Range("E" & ActiveCell.Row + 1).Value, 10) = "Priority:" & Chr(10) Then
Range("E" & ActiveCell.Row + 1).Value = Mid(Range("E" & ActiveCell.Row + 1).Value, 12, Len(Range("E" & ActiveCell.Row + 1).Value) - 11)
Range("D" & ActiveCell.Row + 2 & ":E" & ActiveCell.Row + 2).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D" & ActiveCell.Row).Value = "Management Response"
Range("D" & ActiveCell.Row).HorizontalAlignment = xlCenter
Range("D" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("D" & ActiveCell.Row).Interior.Color = 14277081
Range("D" & ActiveCell.Row).Font.Bold = True
Range("E" & ActiveCell.Row).Value = "Target Implementation Date"
Range("E" & ActiveCell.Row).HorizontalAlignment = xlCenter
Range("E" & ActiveCell.Row).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Range("E" & ActiveCell.Row).Interior.Color = 14277081
Range("E" & ActiveCell.Row).Font.Bold = True
Range("D" & ActiveCell.Row + 1 & ":E" & ActiveCell.Row + 1).Select
Selection.Insert Shift:=xlDown
Range("D" & ActiveCell.Row & ":E" & ActiveCell.Row).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End If
Next
Sheets("Annex II").Select
Range("C4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Ineffective"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Effective"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("D4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""High"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Low"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""Moderate"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
'Starting to generate the report in MsWord
Sheets("Data Table").Select
Set wdApp = New Word.Application
uName = Environ("Username")
fName = "C:\Users\" & uName & "\World Health Organization\IOS Internal Audit - Form Templates\TeamMate Custom Reports\Draft Report Template\IOS Excel Utility\IOS Template.dotx"
With wdApp
.Visible = True
.Documents.Open fName, , ReadOnly
Range("A2").Copy 'audit code
.Selection.Goto wdGoToBookmark, , , "AuditCodeP1"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeP2"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAI"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAIII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditCodeAIV"
.Selection.PasteSpecial , , , , wdPasteText
Range("C6").Copy 'audit title
.Selection.Goto wdGoToBookmark, , , "AuditTitleP1"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleP2"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAI"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAIII"
.Selection.PasteSpecial , , , , wdPasteText
.Selection.Goto wdGoToBookmark, , , "AuditTitleAIV"
.Selection.PasteSpecial , , , , wdPasteText
If Len(Range("H6")) > 0 Then
Range("H6").Copy 'executive summary
.Selection.Goto wdGoToBookmark, , , "ExecutiveSummary"
.Selection.PasteSpecial , , , , wdPasteText
End If
Sheets("Table of Recommendations").Select
Range("A3").Select 'table of recommendations
Range(Selection, Selection.End(xlToRight)).Select 'table of recommendations
Range(Selection, Selection.End(xlDown)).Select 'table of recommendations
Application.CutCopyMode = False
Selection.Copy
Range("H3").Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
'merging and centering the bold lines
Range("H4").Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Select
Range(Selection, Selection.End(xlDown)).Select
Set StartCell = Range("H4")
Set myList = Range("H4:H" & Range("H" & Rows.Count).End(xlUp).Row)
For Each X In myList
If X.Font.Bold = True Then
X.Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Merge
End If
Next
Range("H3").Select 'table of recommendations into the word document.
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="(blank)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "TableOfRecommendations"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Range("H3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlToLeft
Sheets("Data Table").Select
If Len(Range("G6")) > 0 Then
Range("G6").Copy 'introduction
.Selection.Goto wdGoToBookmark, , , "Introduction"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("F6")) > 0 Then
Range("F6").Copy 'objective, scope, and approach
.Selection.Goto wdGoToBookmark, , , "ObjectiveScopeApproach"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("I6")) > 0 Then
Range("I6").Copy 'audit conclusion
.Selection.Goto wdGoToBookmark, , , "AuditConclusion"
.Selection.PasteSpecial , , , , wdPasteText
End If
If Len(Range("H6")) > 0 Then
Range("I6").Copy 'good practices
.Selection.Goto wdGoToBookmark, , , "GoodPractices"
.Selection.PasteSpecial , , , , wdPasteText
End If
Sheets("Annex II").Select
Range("A3").Select 'annex II
Range(Selection, Selection.End(xlToRight)).Select 'annex II
Range(Selection, Selection.End(xlDown)).Select 'annex II
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "AnnexII"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Sheets("Annex of Low Risk Recs").Select
Range("A3").Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlToRight)).Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlDown)).Select 'Annex of Low Risk Recs
Application.CutCopyMode = False
Selection.Copy
Range("D3").Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
'merging and centering the bold lines
Range("D3").Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 1)).Select
Range(Selection, Selection.End(xlDown)).Select
Set StartCell = Range("D4")
Set myList = Range("D4:D" & Range("D" & Rows.Count).End(xlUp).Row)
For Each Y In myList
If Y.Font.Bold = True Then
Y.Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 1)).Merge
End If
Next
Range("D3").Select 'Annex of Low Risk Recs
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="(blank)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "AnnexIII"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows(1).Select
.Selection.Rows.HeadingFormat = True
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
Range("D3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlToLeft
Sheets("Main Body of the Report").Select
Range("C1").Select
Selection.End(xlDown).Select
Range("E1048576").Select
Selection.End(xlUp).Select
rNumber = ActiveCell.Row
Range("D4:" & "E" & ActiveCell.Row).Select 'main body of the report
Selection.Copy
.Selection.Goto wdGoToBookmark, , , "MainBody"
.Selection.PasteExcelTable False, False, False
.Selection.Tables(1).Rows.Height = 0
.Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
.Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = "Observations: "
.Replacement.Text = "Observations:^t^t^t^t^t^t^t^t^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
Sheets("Main Body of the Report").Select
Columns("D:E").Select
Selection.Clear
'Start from the top of the document
wdApp.Selection.HomeKey wdStory
sFindText = "|H1|"
wdApp.Selection.Find.Execute sFindText
Do Until wdApp.Selection.Find.Found = False
wdApp.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
wdApp.Selection.Style = ActiveDocument.Styles("Heading 1")
wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
wdApp.Selection.ParagraphFormat.Space1
wdApp.Selection.ParagraphFormat.SpaceBefore = 12
wdApp.Selection.MoveRight
wdApp.Selection.Find.Execute
Loop
wdApp.Selection.HomeKey wdStory
sFindText = "|H2|"
wdApp.Selection.Find.Execute sFindText
Do Until wdApp.Selection.Find.Found = False
wdApp.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
wdApp.Selection.Style = ActiveDocument.Styles("Heading 2")
wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
wdApp.Selection.ParagraphFormat.Space1
wdApp.Selection.ParagraphFormat.SpaceAfter = 12
wdApp.Selection.ParagraphFormat.SpaceBefore = 12
wdApp.Selection.MoveRight
wdApp.Selection.Find.Execute
Loop
wdApp.Selection.HomeKey wdStory
wdApp.Selection.Find.ClearFormatting
wdApp.Selection.Find.Replacement.ClearFormatting
With wdApp.Selection.Find
.Text = "|H1|"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdApp.Selection.Find.Execute Replace:=wdReplaceAll
With wdApp.Selection.Find
.Text = "|H2|"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdApp.Selection.Find.Execute Replace:=wdReplaceAll
End With
For Each sht In Application.Worksheets
sht.Sort.SortFields.Clear
Next sht
Set xlApp = Excel.Application
With xlApp
.Visible = True
Sheets("Data Table").Select
Range("A2").Select
MsgBox "Report generated corectly in Ms Word. You may now close the Excel file.", vbOKOnly, "Good news!"
End With
End Sub