【发布时间】:2019-03-29 23:10:17
【问题描述】:
我有一个包含表情符号的电子表格,例如 ????,我正在寻找使用 Excel VBA 将表情符号替换为 null 的解决方案。
可以使用 Excel 替换操作删除表情符号,因此我录制了一个宏来自动替换。我打开录制的宏,显示如下:
Sub Remove_Emojis()
Cells.Replace What:="??", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End Sub
问题在于 VBA 无法识别表情符号 (????) 并将其替换为“??”,即 VBA 无法识别高于某个值的 Unicode 字符。
我尝试替换“??” ChrW():
Sub Remove_Emojis()
Cells.Replace What:=ChrW(128515), Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
End Sub
但这会导致错误:
参数的过程调用无效
因为 ChrW() 函数不允许大于 65535 的值。注意:如果参数的值在 -32,767 到 65,535 范围内,则 ChrW() 函数有效。
鉴于可以在 Excel 中完成,我希望应该支持在 VBA 中执行此操作。
【问题讨论】: