2015-02-25 3 views
0

OLD ----- Как я могу это сделать? Я пробовал с этим, но он сработал ant execute--- ИЗМЕНИТЬ --- Слово VBA - найти «-» внутри слова и оставить слово

Sub Sintesis() 

      With ActiveDocument.Content.Find 
       .Text = "([^$])" & "-^p" 
       .Replacement.Text = "\1" 
       .MatchWildcards = True 
       .Execute Replace:=wdReplaceAll 


      End With 
End sub 

Некоторая помощь? Прежде чем кто-нибудь скажет мне об этом, я предпочитаю делать это с помощью find/replace вместо Regex END OLD -----

Я видел, что частично решал свою реальную проблему. Мне действительно нужно удалить строку «-» между двумя половинами слова. Я не могу заменить «-» на «», потому что в моем тексте есть несколько правильных строк, таких как первый.

я на самом деле нужно CONVER это: "Blablablablabla" Into: "Blablablablabla"

+2

Можете ли вы предоставить текст, на котором '.find' применяется? –

+1

Почему вы используете '[^ $]'? Что вы ожидаете найти? –

+1

Какова ваша ошибка при выполнении? – blckbird

ответ

0

Вы можете сделать это с помощью регулярных выражений. Используя следующую рекурсивную процедуру

Sub ReplaceHyphens() ' Make sure you add a reference to Microsoft VBScript Regular Expressions 5.5 
    Dim rex As New RegExp 
    rex.Pattern = "(.)-(.)" 
    rex.Global = False 
    Dim str As String: str = ActiveDocument.Content 
    Dim mtch As Object 
    If rex.Test(str) Then 
     ActiveDocument.Content = rex.Replace(ActiveDocument.Content, rex.Execute(str)(0).SubMatches(0) & ActiveDocument.Content, rex.Execute(str)(0).SubMatches(1)) 
     ReplaceHyphens 
    Else 
     Exit Sub 
    End If 
End Sub 
+0

Работает нормально, спасибо, но я бы предпочел сделать это без объекта регулярного выражения. –

+0

Добро пожаловать, мне жаль, что я не знаком с Word Find/Replace. Поэтому я боюсь, что не смогу вам помочь. Могу ли я спросить, почему вы не хотите использовать RegEx? – Jeanno

+0

Потому что, как вы с find/replace, я не знаком с регулярным выражением, и я хотел бы понять, что, черт возьми, я делаю XDDD. Я новичок в vba с макросами –

1

Решенные:

Sub FindDash() 
With Selection.Find 
       .Text = "([0-9A-z])- ([0-9A-z])" 
       .Replacement.Text = "\1\2" 
       .Forward = True 
       .Wrap = wdFindContinue 
       .MatchWildcards = True 
       .Execute Replace:=wdReplaceAll 
      End With 
End Sub 
Смежные вопросы