VBA按新行字拆分数据

时间:2018-05-17 00:49:19

标签: vba split ms-word

我正在尝试使用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功能中尝试过的内容

  • \ n
  • \ n \ r
  • \ r
  • vbNewLine
  • vbLf
  • VBCR
  • vbCrLf

2 个答案:

答案 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"