2013-04-06 129 views
1

我需要为Microsoft Word文档中的每个单词添加正确的重音符号。我有一个名为“DoAccentuate”的脚本,它确定输入的任何单词的正确加重。但是,我不知道如何捕获当前选定的单词,使用我的DoAccentuate脚本处理它,并将结果替换为同一单词(不影响文本格式)。这是我试过的。使用VB.NET和Office-Interop从Word中找到的文本生成替换文本

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim document As Word.Document 
    document = Globals.ThisAddIn.Application.ActiveDocument 

    Dim FindObject As Word.Find = document.Application.Selection.Find 
    With FindObject 
     .ClearFormatting() 
     .Text = "<*>" 
     .MatchWildcards = True 
     .Replacement.ClearFormatting() 
     .Replacement.Text = DoAccentuate(document.Application.Selection.Text) 
     .Execute(Replace:=Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll) 

    End With 
End Sub 
+0

我想一个更好的解决办法是每个文档一键式操作,而不是要求用户选择该单词,否?如果是这样,发布一个新问题。它不应该是太多的编程工作真的。 – JohnZaj 2013-04-07 05:28:02

+0

@jJack谢谢你的帮助!正如你所建议的,我会在每个文档场景中发布一个“单击”的新问题。 – johhoso 2013-04-07 10:31:18

+0

可以从这里发布链接到它,因为它的相关 – JohnZaj 2013-04-07 21:43:23

回答

1

让我们假装现在这是你的DoAccentuate脚本:

Private Function DoAccentuate(theWordToAccentuate As String) 
    theWordToAccentuate = theWordToAccentuate + "`" 
    DoAccentuate = theWordToAccentuate 
End Function 

鉴于此,查找/替换可以是简单的:

Public Sub FindWordAndReplaceWithAccentuatedForm() 
    Dim accentuatedText As String: accentuatedText = DoAccentuate(Selection.text) 

    Selection.Find.text = Selection.text 
    Selection.Find.Replacement.text = DoAccentuate(Selection.text) 
    Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 

这不应该删除任何格式。

我假设你的愿望,需要用户选择他们想要加重,然后运行宏(字一个解决方案,因为你上面的方法假设这即:.Replacement.Text = DoAccentuate(document.Application.Selection.Text

相关问题