如何为单字符VBA转Unicode小端十六进制脚本添加循环处理全文本?
实现VBA批量文本转Unicode小端十六进制
嘿,我来帮你搞定这个问题!你的现有函数已经能正确处理单个字符的小端转换了,只需要加个循环遍历输入字符串的每一个字符,再把结果拼接起来就完事啦。
修改思路
- 先把函数参数从单个字符改成支持任意长度的字符串,这样能直接接收单元格里的整段文本
- 初始化一个空字符串用来存最终的拼接结果
- 用
For...Next循环遍历输入文本的每一个字符 - 对每个字符执行你原有的小端转换逻辑,把结果追加到总结果里
- 循环结束后返回完整的拼接结果
另外我还简化了你原有的十六进制补零逻辑,不用写多个If判断,一行代码就能搞定4位补零,更简洁可靠。
完整修改后的代码
Function Text2LE(InputText As String) As String Dim result As String Dim i As Integer Dim char As String Dim hexValue As String ' 初始化结果为空字符串 result = "" ' 循环遍历输入文本的每一个字符 For i = 1 To Len(InputText) ' 取出当前位置的单个字符 char = Mid(InputText, i, 1) ' 获取字符的Unicode编码并转为4位十六进制(自动补前导零) hexValue = Right$("0000" & Hex$(AscW(char)), 4) ' 转换为小端格式:交换前两位和后两位 hexValue = Right$(hexValue, 2) & Left$(hexValue, 2) ' 把当前字符的结果拼接到总结果里 result = result & hexValue Next i ' 返回最终拼接好的小端十六进制字符串 Text2LE = result End Function
代码说明
- 参数调整:把原来的
Character As String改成InputText As String,适配整段文本输入 - 循环逻辑:
Len(InputText)获取输入文本长度,Mid(InputText, i, 1)逐个取出字符 - 简化补零:
Right$("0000" & Hex$(AscW(char)), 4)自动把十六进制字符串补到4位,不管原编码是1位、2位还是4位 - 小端转换:交换4位十六进制的前两位和后两位,完美实现Unicode小端字节序
- 结果拼接:每次处理完一个字符就把结果追加到
result变量,最后返回完整结果
测试示例
比如在单元格输入"测试ABC",调用=Text2LE(A1)会返回:"6D008BD0410042004300"
(对应每个字符的小端十六进制:测→6D00,试→8BD0,A→4100,B→4200,C→4300)
内容的提问来源于stack exchange,提问作者Masa-san




