У меня есть электронная таблица, содержащая смайлики, например, ?, и я ищу решение использовать Excel VBA для замены смайликов на ноль.
Emojis можно удалить с помощью действия замены Excel, поэтому я записал макрос для автоматизации замены. Я открыл записанный макрос, и он отображался следующим образом:
Sub Remove_Emojis()
Cells.Replace What:="??", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End Sub
Проблема в том, что VBA не распознает эмодзи (?) и заменяет их на «??», т. Е. Символы Юникода выше определенного значения не распознаются VBA.
Я пытался заменить "??" с ChrW()
:
Sub Remove_Emojis()
Cells.Replace What:=ChrW(128515), Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End Sub
но это приводит к ошибке:
Недопустимый вызов процедуры аргумента
потому что функция ChrW () не допускает значение выше 65535. Примечание. Функция ChrW () работает, если значение аргумента находится в диапазоне от -32 767 до 65 535.
Я ожидаю, что должна быть поддержка для этого в VBA, учитывая, что это может быть сделано в Excel.