我想在Visual Studio 2008中使用宏自动替换字符串。我已经使用记录器创建了宏(见下面的代码),但它不起作用(尽管在交互模式下,替换效果很好)。
我希望替换应用于当前文档中的当前选择。我很惊讶看到文件的名字(
Text.txt
)显式显示,因此宏可能无法在另一个文件上工作,但它无论如何也无法在该文件上工作。
以下是宏源:
Sub Multiline()
DTE.ExecuteCommand("Edit.Replace")
DTE.Windows.Item("Text.txt").Activate()
DTE.Find.FindWhat = "$"
DTE.Find.ReplaceWith = "\n\n"
DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocumentSelection
DTE.Find.MatchCase = True
DTE.Find.MatchWholeWord = False
DTE.Find.MatchInHiddenText = True
DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
Throw New System.Exception("vsFindResultNotFound")
End If
End Sub
作为参考,相应的替换对话框:
有什么线索吗?为什么会失败?