Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Найти и заменить много слов за один раз через VBA
 
Приветствую! У меня есть некий рабочий файл, в котором я хотел бы произвести массовую замену определенных слов на другие. Попробовал поискать готовые решения в интернетах, но они либо подразумевают добавление самих значений в файл (грубо говоря, текст в колонке А, исходные слова под замену в колонке B, а то на что надо заменить слово в колонке C), либо подразумевают, что заменить надо содержание ячейки целиком, а не отдельные в них слова. Эти варианты мне не совсем подходят, так как у меня около 100 файлов и добавлять в каждый новые колонки, а потом их удалять займет, по ощущениеям, больше времени, чем если сделать замену вручную.

Поэтому хотел уточнить, реально ли массовую замену слов запихнуть полностью в VBA, включая все исходные слова, а также то на что их надо заменить. Таких слов может быть от 30 до 50, я их готов все вручную прописать, не проблема. Если реально, получится помочь с примером самого кода, пожалуйста?

Не уверен, что словами объяснил нормально, поэтому приложу файл пример. Мне нужно поменять следующее:

@Дрова ==> [lumber]
@Редкий ==> [rare]
@2Игрока ==> [2players]
@1Игрок ==> [1player]
@БоссТокен ==> [elite_token]
@Золото ==> [gold]

В реальном рабочем файле текст, где потребуется замена, может быть в колонках А и B. По сути мне нужно заменить одни технические теги (@Текст) на другие ([text]); эти теги потом будут преобразованы в графические иконки. Понимаю, что это можно сделать ручками через тот же CTRL+H, просто файлов будет около 100, а самих технических тегов от 30 до 50, вдруг через макрос можно это дело сделать оперативнее.

Спасибо!
Изменено: Yopt - 02.08.2024 13:58:34
Замена HTML тегов на реальное форматирование (жирный, курсив)
 
Приветствую! У меня есть пример текста следующего формата:

Здесь будет <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-файле
 
Здравствуйте!

Сегодня в очередной раз при работе не обратил внимание, что в присланном документе excel было несколько листов, из-за чего пришлось немного сдвинуть сроки работ и тд. Хотел бы спросить, знаете ли вы какой-нибудь макрос или надстройку, или любое другое решение, которое каким-либо образом обозначало общее кол-во листов в документе или било тревогу, если количество листов превышает один, в общем давало мне знать, что в файле есть несколько листов, с которыми надо работать.

Спасибо!
Изменено: Yopt - 29.05.2013 15:07:33
Страницы: 1
Наверх