Приветствую! У меня есть некий рабочий файл, в котором я хотел бы произвести массовую замену определенных слов на другие. Попробовал поискать готовые решения в интернетах, но они либо подразумевают добавление самих значений в файл (грубо говоря, текст в колонке А, исходные слова под замену в колонке B, а то на что надо заменить слово в колонке C), либо подразумевают, что заменить надо содержание ячейки целиком, а не отдельные в них слова. Эти варианты мне не совсем подходят, так как у меня около 100 файлов и добавлять в каждый новые колонки, а потом их удалять займет, по ощущениеям, больше времени, чем если сделать замену вручную.
Поэтому хотел уточнить, реально ли массовую замену слов запихнуть полностью в VBA, включая все исходные слова, а также то на что их надо заменить. Таких слов может быть от 30 до 50, я их готов все вручную прописать, не проблема. Если реально, получится помочь с примером самого кода, пожалуйста?
Не уверен, что словами объяснил нормально, поэтому приложу файл пример. Мне нужно поменять следующее:
В реальном рабочем файле текст, где потребуется замена, может быть в колонках А и B. По сути мне нужно заменить одни технические теги (@Текст) на другие ([text]); эти теги потом будут преобразованы в графические иконки. Понимаю, что это можно сделать ручками через тот же CTRL+H, просто файлов будет около 100, а самих технических тегов от 30 до 50, вдруг через макрос можно это дело сделать оперативнее.
Приветствую! У меня есть пример текста следующего формата:
Здесь будет <b>важная</b> информация, которую <i>было бы неплохо</i> вынести в <b>отдельный</b> документ.
Я бы хотел с помощью макроса осуществить следующие действия:
- отформатировать все что внутри тегов <b>...</b> жирным - удалить сами теги <b> и </b> - отформатировать все что внтури тегов <i>...</i> курсивом - удалить сами теги <i> и </i> - применить макрос ко всему столбцу
То есть чтобы получилось вот так:
Здесь будет важная информация, которую было бы неплохо вынести в отдельный документ.
Покопавшись в интернетах, я нашел следующий код:
Sub BoldTags() Dim X As Long, BoldOn As Boolean BoldOn = False 'Default from start of cell is not to bold For X = 1 To Len(ActiveCell.Text) If UCase(Mid(ActiveCell.Text, X, 3)) = "<B>" Then BoldOn = True ActiveCell.Characters(X, 3).Delete End If If UCase(Mid(ActiveCell.Text, X, 4)) = "</B>" Then BoldOn = False ActiveCell.Characters(X, 4).Delete End If ActiveCell.Characters(X, 1).Font.Bold = BoldOn Next End Sub
И он работает, но только в одной ячейке (у меня целый столбец текстов). Мои познания в VBA минимальны насколько это возможно, поэтому хотел узнать, будет ли возможность помочь доработать этот макрос (или быть может предложить что-то совсем другое), чтобы он работал на всю колонку. И можно ли сразу сделать так, чтобы один макрос преобразовывал и жирный, и курсив? В теории, наверное, можно было бы сделать два отдельных макроса и, насколько я понимаю, заменить BoldOn и прочие выражения на ItalicOn, но вдруг это можно все одной кнопкой прогнать.
Сложилось впечатление, что вопрос тривиальный, однако решения пока найти так и не получилось. У меня есть файл с 2 столбцами, который содержит процентов 90 чешского и процентов 10 русского. Мне нужно выделить русский язык, чтобы впоследствии перевести на чешский. Я воспользовался макросом, найденным на этом же форуме, чтобы окрасить весь русский в красный цвет, теперь мне осталось его просто отфильтровать.
Однако проблема в том, что в разных столбцах выделены разные строки, например в столбце А красным выделены строки 1,3 и 5, а в столбце B красным выделены строки 2,4 и 6. Если я фильтрую столбец А, то он не показывает строки в столбце B и, соответственно, наоборот, если фильтрую столбец B. Мне же нужно, чтобы после фильтрации остался красный во всех столбцах; фильтрация стоит на всех столбцах, я пробовал выделять столбцы через CTRL и нажимать на столбцы в разной последовательности, один раз мне показалось, что он отфильтровал корректно, так как показывал и строку 5, и строку 6, решил проверить на другом файле - уже не получилось. Сможете объяснить корректную последовательность действий, пожалуйста? Или так отфильтровать не получится в принципе?
Здравствуйте, мне довольно часто приходится работать с Книгами, содержащими по 100+ листов. На каждом листе скрыты разные столбцы и/или строки и перед финальной отправкой мне нужно отобразить абсолютно все данные, все столбцы и строки. Начинал я вручную: выделить все, правая клавиша, Отобразить. Далее я нашел вот такой простенький макрос, который экономит немного времени:
Код
sub show_all()
with activesheet.cells
.entirerow.hidden=false
.entirecolumn.hidden=false
end with
end sub
Однако он работает только на активный лист. Я попробовал поискать методы применения макроса сразу ко всем листам и нашел вот такую конструкцию:
Код
Sub Dosomething() Dim xSh As Worksheet
Application.ScreenUpdating = False
For Each xSh In Worksheets
xSh.Select
Call RunCode
Next
Application.ScreenUpdating = True
End Sub
Sub RunCode()
'your code here
End Sub
Преобразовал ее в следующее:
Код
Sub Dosomething() Dim xSh As Worksheet
Application.ScreenUpdating = False
For Each xSh In Worksheets
xSh.Select
Call RunCode
Next
Application.ScreenUpdating = True
End Sub
Sub RunCode()
sub show_all()
with activesheet.cells
.entirerow.hidden=false
.entirecolumn.hidden=false
end with
End Sub
Но она так и не заработала, вызывает ошибку с строке Sub RunCode(). Сможете подсобить с поиском решения, пожалуйста? Может быть есть более простой вариант?
Сегодня в очередной раз при работе не обратил внимание, что в присланном документе excel было несколько листов, из-за чего пришлось немного сдвинуть сроки работ и тд. Хотел бы спросить, знаете ли вы какой-нибудь макрос или надстройку, или любое другое решение, которое каким-либо образом обозначало общее кол-во листов в документе или било тревогу, если количество листов превышает один, в общем давало мне знать, что в файле есть несколько листов, с которыми надо работать.