我正在尝试使用VBA在单词中分割数据。
我使用以下方法获取数据
d = ActiveDocument.Tables(1).Cell(1, 1).Range.Text
这样可以获得正确的数据。此示例的数据是
This
is
a
test
但是,当我需要使用分隔符将字符串拆分为字符串列表时\ n
以下是所需输出的示例
This,is,a,test
我目前正在使用
Dim dataTesting() As String
dataTesting() = Split(d, vbLf)
Debug.Print dataTesting(0)
然而,这会返回所有数据,而不仅仅是第一行。
以下是我在Split功能中尝试过的内容
答案 0 :(得分:0)
您可以尝试此操作(来自this thread的正则表达式拆分器)
Sub fff()
Dim d As String
Dim dataTesting() As String
d = ActiveDocument.Tables(1).Cell(1, 1).Range.Text
dataTesting() = SplitRe(d, "\s+")
Debug.Print "1:" & dataTesting(0)
Debug.Print "2:" & dataTesting(1)
Debug.Print "3:" & dataTesting(2)
Debug.Print "4:" & dataTesting(3)
End Sub
Public Function SplitRe(Text As String, Pattern As String, Optional IgnoreCase As Boolean) As String()
Static re As Object
If re Is Nothing Then
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.MultiLine = True
End If
re.IgnoreCase = IgnoreCase
re.Pattern = Pattern
SplitRe = Strings.Split(re.Replace(Text, ChrW(-1)), ChrW(-1))
End Function
如果这不起作用,Word文档中可能会出现奇怪的unicode / Wprd字符。例如,它可能是软休息。您可以尝试不使用“\ W +”而不是“\ s +”进行拆分。没有你的文件,我无法测试。
答案 1 :(得分:0)
Word使用vbCr(ANSI 13)编写“新”段落(按ENTER时创建) - 如果激活非打印字符的显示,则在Word UI中表示。
在这种情况下,您显示的表格单元格内容将如下所示
This¶
is¶
a¶
test¶
在Word中拆分由pilcro分隔的数组的正确方法是:
Dim d as String
d = ActiveDocument.Tables(1).Cell(1, 1).Range.Text
Dim dataTesting() As String
dataTesting() = Split(d, vbCr)
Debug.Print dataTesting(0) 'result is "This"