新的行将添加到word()。cell()。range.text in word macro

时间:2018-05-10 12:16:15

标签: vba ms-word word-vba

当我使用docCurrent.Tables(x).Cell(x,y).Range.Text从表格中的单元格复制文本时,会添加一个新行以及单元格中的文本。

我使用的代码是:

Sub tabele_trasfer()
'
' tabele_trasfer Macro
'
'
Dim docCurrent As Document
Dim docNew As Document
Dim myRange As Range

Set docCurrent = ActiveDocument
Set docNew = Documents.Add
Set myRange = docNew.Range(0, 0)

docNew.Tables.Add Range:=myRange, NumRows:=docCurrent.Tables(5).Rows.Count, NumColumns:=docCurrent.Tables(5).Columns.Count

For i = 1 To docCurrent.Tables(5).Rows.Count
    docNew.Tables(1).Cell(Row:=i, Column:=1).Range.Text = docCurrent.Tables(5).Cell(i, 2).Range.Text
    docNew.Tables(1).Cell(Row:=i, Column:=2).Range.Text = docCurrent.Tables(5).Cell(i, 2).Range.Text
Next i

End Sub

1 个答案:

答案 0 :(得分:3)

原因是表格单元格的结尾包含两个字符:Chr(13)& Chr(7) - 段落标记和细胞末端标记。您可以将其删除以仅保留文本。

我提供了一个我用于此目的的函数,它接受单元格Range并返回下面的字符串值。这是你的一条线,改为使用函数

docNew.Tables(1).Cell(Row:=i, Column:=1).Range.Text = _
           TrimCellText(docCurrent.Tables(5).Cell(i, 2).Range)

功能

Function TrimCellText(r As word.Range) As String
    Dim sLastChar As String
    Dim sCellText As String

    sCellText = r.Text
    sLastChar = Right(sCellText, 1)
    Do While sLastChar = Chr(7) Or sLastChar = Chr(13)
        sCellText = Left(sCellText, Len(sCellText) - 1)
        sLastChar = Right(sCellText, 1)
    Loop
    TrimCellText = sCellText
End Function