Excel 需要向word文档添加多个表

Excel 需要向word文档添加多个表,excel,vba,ms-word,Excel,Vba,Ms Word,我需要将excel宏中的多个表添加到word文档中 我通过循环尝试了对象Set objTable=objDoc.Tables(1),但它正在用新数据覆盖现有表的内容 Sub btnrun_Click() Dim objWord As Object Dim objDoc As Object Dim ObjSelection Dim ObjRange Dim objTable Dim intRows, intColumns, defVal, x

我需要将excel宏中的多个表添加到word文档中

我通过循环尝试了对象
Set objTable=objDoc.Tables(1)
,但它正在用新数据覆盖现有表的内容

Sub btnrun_Click()
    Dim objWord As Object
    Dim objDoc As Object
    Dim ObjSelection
    Dim ObjRange
    Dim objTable
    Dim intRows, intColumns, defVal, x
    Dim y As Integer

    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add
    objWord.Visible = True
    Set ObjSelection = objWord.Selection

    intRows = 8
    intColumns = 2
    defVal = 7
    x = 8
    y = 1

    Set ObjRange = ObjSelection.Range
    objDoc.Tables.Add ObjRange, intRows, intColumns

    While (Not IsEmpty(Worksheets("Sheet1").Range("A" & x)))
        Set objTable = objDoc.Tables(1)
        objTable.Borders.Enable = True
        objTable.Columns(1).Width = 150
        objTable.Columns(2).Width = 300

    For i = 1 To 1
        For j = 1 To 1
            objTable.cell(j, i).Range.Text = Worksheets("Sheet1").Range("A" & defVal)
            objTable.cell(j, 2).Range.Text = Worksheets("Sheet1").Range("A" & x)
            objTable.cell(j + 1, i).Range.Text = Worksheets("Sheet1").Range("B" & 
    defVal)
            objTable.cell(j + 1, 2).Range.Text = Worksheets("Sheet1").Range("B" & x)
            objTable.cell(j + 5, i).Range.Text = "Fircosoft UI"
            objTable.cell(j + 6, i).Range.Text = "Cognos UI"
            objTable.cell(j + 7, i).Range.Text = "Database Result"
        Next       
    Next

    x = x + 1                           
    Wend

    objDoc.SaveAs ("D:\PassLogs")
    objWord.Quit

    Set objWord = Nothing

End Sub

目前,这些值正在被覆盖,但我希望它们每次都添加到一个新表中。

使用
Set objTable=objDoc.Tables(1)
您不会创建新表。您正在使用现有的。要添加表格,您必须使用
.tables.add
。在Google上研究如何在word vba中添加一个表,然后在Excel中使用该代码并进行相关修改。下面是我用与示例中提供的相同方法所做的一项工作。但值得注意的是,值在同一个表中被重写。您所做的是将表添加到循环之外。在循环中添加表,然后使用它。也可以使用
Set objTable=objDoc.Tables.Add而不是
objRange.intNoOfRows.intNoOfColumns
Add(objRange,intRows,intColumns)
然后使用
objTable
:)代码正在工作,创建了两个表,但使用第一个表创建了第二个表。有没有特定的函数可以在新行中断行并创建新表?