VBA提取Word字段值出现方框特殊字符,如何拆分多值存入数组?
解决Word VBA中特殊方框分隔符拆分多数值的实现方法
核心思路:拆分失败是因为间隔两个数值的「方框」不是普通空格/换行符,是Word中特定的非打印特殊字符,只要先确认该字符的Unicode编码,即可通过替换或遍历的方式拆分所有数值,适配任意多值场景。
第一步:确认特殊方框字符的编码
先运行以下代码获取目标文本中所有字符的编码值,定位方框对应的编码:
Sub GetSpecialCharCode() Dim x1 As String, i As Long x1 = ActiveDocument.SelectContentControlsByTag("TWCAR_Nominal").Item(1).Range.Text For i = 1 To Len(x1) Debug.Print "第" & i & "个字符:" & Mid(x1, i, 1) & ",编码:" & AscW(Mid(x1, i, 1)) Next i End Sub
运行后在VBA编辑器的「立即窗口」查看输出,找到显示为方框的字符对应的编码值,后续把代码中的splitCharCode替换为你实测得到的编码即可。
第二步:基于特殊字符拆分多数值到数组
以下代码支持任意数量的数值拆分,自动将所有值存入数组,可匹配你要求的array(1)=10、array(2)=10格式:
Function calcinput() As Variant Dim x1 As String, splitCharCode As Long Dim arr As Variant, i As Long, tempStr As String ' 此处替换为第一步你查到的特殊方框字符的编码,示例为常见方框字符编码&H25A1 splitCharCode = &H25A1 ' 获取内容控件文本 x1 = ActiveDocument.SelectContentControlsByTag("TWCAR_Nominal").Item(1).Range.Text ' 把所有特殊分隔符替换为普通分隔符| tempStr = "" For i = 1 To Len(x1) If AscW(Mid(x1, i, 1)) = splitCharCode Then tempStr = tempStr & "|" Else tempStr = tempStr & Mid(x1, i, 1) End If Next i ' 拆分得到数值数组 arr = Split(tempStr, "|") ' 测试输出:符合你要求的下标从1开始的展示格式,可按需删除 For i = LBound(arr) To UBound(arr) MsgBox "array(" & i + 1 & ") = " & arr(i) Next i calcinput = arr End Function
补充说明
- 原代码中
MsgBox x1 + s2属于笔误,s2应替换为你定义的单位变量x2 - 如果不需要数组下标从1开始,直接使用Split返回的默认从0开始的数组即可
- 只要间隔的方框字符编码一致,不管是2个还是更多数值都可以正常拆分
内容的提问来源于stack exchange,提问作者Sumanth
相关产品推荐
相关产品推荐

