【发布时间】:2018-06-03 05:24:16
【问题描述】:
我的代码使用 VBA Excel 宏在 Word 文件中搜索单词并将它们粘贴到 Excel 工作表单元格,但我的代码现在多次重复相同的查找功能:
Sub test()
Dim Word As Object
Dim WordDoc As Object
Dim r, f As Boolean, fO As Long
Set Word = CreateObject("Word.Application")
Set WordDoc = Word.Documents.Open(Filename:=Application.ThisWorkbook.path & "\test.docx")
'''Name'''
Set r = WordDoc.Range
Do
With r.Find
.ClearFormatting
.Text = "name*author"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
If .Execute Then
If f Then
If r.Start = fO Then
Exit Do
End If
Else
fO = r.Start
f = True
End If
WordDoc.Range(r.Start + 4, r.End - 6).Copy
Range("C4").Select
ActiveSheet.Paste
Set r = WordDoc.Range(r.End, r.End)
Else
Exit Do
End If
End With
Loop
'''Exercise'''
Set r = WordDoc.Range
Do
With r.Find
.ClearFormatting
.Text = "exercise*book"
...
WordDoc.Range(r.Start + 8, r.End - 4).Copy
Range("C6").Select
ActiveSheet.Paste
Set r = WordDoc.Range(r.End, r.End)
Else
Exit Do
End If
End With
Loop
End Sub
如何避免代码重复?
有人可以帮我解决这些问题吗?提前致谢!
【问题讨论】:
-
重复复制粘贴同一个函数是什么意思?
-
正确缩进你的代码,然后第一个循环和第二个循环之间的差异会更加明显,这意味着,如果你想重构那个部分,你需要做一些思考编写正确的辅助函数的所有潜在用例。