Подскажите пожалуйста, как можно реализовать с помощью макроса, поиск и замену длинных фрагментов текста 300-1500 символов, через классический способ можно только 255 знаков. Огромное спасибо!
Подскажите пожалуйста, как можно реализовать с помощью макроса, поиск и замену длинных фрагментов текста 300-1500 символов, через классический способ можно только 255 знаков. Огромное спасибо!rowniewby
Например ищем текст "Queen Eleanor’s Confession THE Queen’s faen sick, and very, very sick, Sick, and going to die, And she’s sent for twa friars of France, To speak with her speedilie.
The King he said to the Earl Marischal, To the Earl Marischal said he, The Queen she wants twa friars frae France, To speak with her presentlie.
Will ye put on a friar’s coat, And I’ll put on another, And we’ll go in before the Queen, Like friars both together.
‘But O forbid,’ said the Earl Marischal, ‘That I this deed should dee! For if I beguile Eleanor our queen, She will gar hang me hie.’
и заменяем на
Королева Элинор Королева Британии тяжко больна, Дни и ночи ее сочтены. И позвать исповедников просит она Из родной, из французской страны.
Но пока из Парижа попов привезешь, Королеве настанет конец… И король посылает двенадцать вельмож Лорда-маршала звать во дворец.
Он верхом прискакал к своему королю И колени склонить поспешил. — О король, я прощенья, прощенья молю, Если в чем-нибудь согрешил!
— Я клянусь тебе жизнью и троном своим: Если ты виноват предо мной, Из дворца моего ты уйдешь невредим И прощенный вернешься домой.
Например ищем текст "Queen Eleanor’s Confession THE Queen’s faen sick, and very, very sick, Sick, and going to die, And she’s sent for twa friars of France, To speak with her speedilie.
The King he said to the Earl Marischal, To the Earl Marischal said he, The Queen she wants twa friars frae France, To speak with her presentlie.
Will ye put on a friar’s coat, And I’ll put on another, And we’ll go in before the Queen, Like friars both together.
‘But O forbid,’ said the Earl Marischal, ‘That I this deed should dee! For if I beguile Eleanor our queen, She will gar hang me hie.’
и заменяем на
Королева Элинор Королева Британии тяжко больна, Дни и ночи ее сочтены. И позвать исповедников просит она Из родной, из французской страны.
Но пока из Парижа попов привезешь, Королеве настанет конец… И король посылает двенадцать вельмож Лорда-маршала звать во дворец.
Он верхом прискакал к своему королю И колени склонить поспешил. — О король, я прощенья, прощенья молю, Если в чем-нибудь согрешил!
— Я клянусь тебе жизнью и троном своим: Если ты виноват предо мной, Из дворца моего ты уйдешь невредим И прощенный вернешься домой.rowniewby
Не совсем так, задача найти определенный фрагмент текста, он может встречаться много раз на листе и заменить все найденые фрагменты на листе также на определенный фрагмент. Чтоб оба фрагмента текста прописывались прямо в макросе. Вот что сейчас работает как надо, но ограничено 255 симоволами.
[vba]
Код
Sub macro422() '
' Range("C1").Select Application.CutCopyMode = False Cells.Replace What:="Королева Британии тяжко больна", Replacement:= _ "THE Queen’s faen sick, and very, very sick,", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub
[/vba]
Не совсем так, задача найти определенный фрагмент текста, он может встречаться много раз на листе и заменить все найденые фрагменты на листе также на определенный фрагмент. Чтоб оба фрагмента текста прописывались прямо в макросе. Вот что сейчас работает как надо, но ограничено 255 симоволами.
[vba]
Код
Sub macro422() '
' Range("C1").Select Application.CutCopyMode = False Cells.Replace What:="Королева Британии тяжко больна", Replacement:= _ "THE Queen’s faen sick, and very, very sick,", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub
Чтоб оба фрагмента текста прописывались прямо в макросе
А про это Вы не говорили ничего. Ну пропишите в макросе, кто ж не дает-то? Вот так [vba]
Код
Sub tt() Dim d_ As Range t0_ = "Queen Eleanor’s Confession" & vbLf & _ "THE Queen’s faen sick, and very, very sick," & vbLf & _ "Sick, and going to die," & vbLf & _ "And she’s sent for twa friars of France," & vbLf & _ "To speak with her speedilie." & vbLf & _ "" & vbLf & _ "The King he said to the Earl Marischal," & vbLf & _ "To the Earl Marischal said he," & vbLf & _ "The Queen she wants twa friars frae France," & vbLf & _ "To speak with her presentlie." & vbLf & _ "" & vbLf & _ "Will ye put on a friar’s coat," & vbLf & _ "And I’ll put on another," & vbLf & _ "And we’ll go in before the Queen," & vbLf & _ "Like friars both together." & vbLf & _ "" & vbLf & _ "‘But O forbid,’ said the Earl Marischal," & vbLf & _ "‘That I this deed should dee!" & vbLf & _ "For if I beguile Eleanor our queen," & vbLf & _ "She will gar hang me hie.’" t1_ = "Здесь мне писать уже стало лень" For Each d_ In ActiveSheet.UsedRange d_ = Replace(d_, t0_, t1_) Next d_ End Sub
[/vba]
И в чем проблема? Так, как у Вас - не будет работать, а если поячеечно пробежаться и Реплейсом заменить, то будет
Чтоб оба фрагмента текста прописывались прямо в макросе
А про это Вы не говорили ничего. Ну пропишите в макросе, кто ж не дает-то? Вот так [vba]
Код
Sub tt() Dim d_ As Range t0_ = "Queen Eleanor’s Confession" & vbLf & _ "THE Queen’s faen sick, and very, very sick," & vbLf & _ "Sick, and going to die," & vbLf & _ "And she’s sent for twa friars of France," & vbLf & _ "To speak with her speedilie." & vbLf & _ "" & vbLf & _ "The King he said to the Earl Marischal," & vbLf & _ "To the Earl Marischal said he," & vbLf & _ "The Queen she wants twa friars frae France," & vbLf & _ "To speak with her presentlie." & vbLf & _ "" & vbLf & _ "Will ye put on a friar’s coat," & vbLf & _ "And I’ll put on another," & vbLf & _ "And we’ll go in before the Queen," & vbLf & _ "Like friars both together." & vbLf & _ "" & vbLf & _ "‘But O forbid,’ said the Earl Marischal," & vbLf & _ "‘That I this deed should dee!" & vbLf & _ "For if I beguile Eleanor our queen," & vbLf & _ "She will gar hang me hie.’" t1_ = "Здесь мне писать уже стало лень" For Each d_ In ActiveSheet.UsedRange d_ = Replace(d_, t0_, t1_) Next d_ End Sub