Vba 在只有一行的表的第一行之后添加一行

Vba 在只有一行的表的第一行之后添加一行,vba,ms-word,rows,Vba,Ms Word,Rows,我需要在MSWord文档的第一行之后添加一行。文档已经有一行和两列,第一个单元格中包含Country,第二个单元格中包含Partner作为两个单元格的值。以下代码的问题是它只能处理至少两行 宏应该能够在两列中添加行和写入预定义字符串。这可以通过两种方式实现 通过在表的末尾添加一行并到达它并写入字符串。如果我这样做了,那么我的问题是如何到达表的最后一行 通过每次添加第二行,如以下代码中所述 Set doc = Documents.Open("C:\Users\dell\Desktop\LATAM.

我需要在
MSWord文档的第一行之后添加一行。文档已经有一行和两列,第一个单元格中包含
Country
,第二个单元格中包含
Partner
作为两个单元格的值。以下代码的问题是它只能处理至少两行

宏应该能够在两列中添加行和写入预定义字符串。这可以通过两种方式实现

  • 通过在表的末尾添加一行并到达它并写入字符串。如果我这样做了,那么我的问题是如何到达表的最后一行

  • 通过每次添加第二行,如以下代码中所述

    Set doc = Documents.Open("C:\Users\dell\Desktop\LATAM.DOCX", , , , , , , , , , , True)
    Set rng = doc.Content
    rng.Tables(1).Rows.Add (rng.Tables(1).Rows(2)) 'Here I am getting error 'required memeber of collect not exist.
    
    Set Cell = rng.Tables(1).Cell(2, 1)
    Set Cell2 = rng.Tables(1).Cell(2, 2)
    Cell.Range.Text = UT
    
    If UT = "CROATIA" Then Cell2.Range.Text = "ERSTE SECURITIES ZAGREB"
    If UT = "CZECH REPUBLIC" Then Cell2.Range.Text = "ERSTE GROUP"
    
  • Latam.docx如下所示:

    要求:在宏之后,应该是这样,在添加的单元格中添加值

    更新答案:

    Set doc = Documents.Open("C:\Users\ibnea\Desktop\List of Countries & Companies CEEMEA & LATAM.DOCX", , , , , , , , , , , True)
    Set rng = doc.Content.Tables(1).Rows.Add
    rng.Range.Font.Bold = False
    rng.Cells(1).Range = UT
    rng.Cells(2).Range = UT2
    

    也许我真的不理解你的问题,但当我打开Word文件并创建一个包含1行(作为标题)和2列的表,然后输入“Country”和“Partner”时,我可以使用以下代码在此表中创建一个新行:

    Option Explicit
    
    Sub addRow()
    Dim tbl As Table
    
    'set tble variable to Table with Index 1 in your document
    Set tbl = ActiveDocument.Tables(1)
    
    'add a row to this table at the end
    tbl.Rows.Add
    
    'get last row in this table
    Dim lastRow As Variant
    lastRow = ActiveDocument.Tables(1).Rows.Count
    
    'write to the last row
    ActiveDocument.Tables(1).Cell(lastRow, 1).Range = "your value in last row / column 1"
    ActiveDocument.Tables(1).Cell(lastRow, 2).Range = "your value in last row / column 2"
    
    
    End Sub
    

    你说你的名单只有一行。此代码现在添加一行,并在第1列和第2列中填充等号右侧的值。现在还不清楚UT是什么,它来自哪里。但无论如何,您现在可以使用此代码访问最后的单元格。

    也许我真的不理解您的问题,但当我打开Word文件并创建一个包含1行(作为标题)和2列的表,然后输入“Country”和“Partner”时,我可以使用此代码在此表中创建一个新行:

    Option Explicit
    
    Sub addRow()
    Dim tbl As Table
    
    'set tble variable to Table with Index 1 in your document
    Set tbl = ActiveDocument.Tables(1)
    
    'add a row to this table at the end
    tbl.Rows.Add
    
    'get last row in this table
    Dim lastRow As Variant
    lastRow = ActiveDocument.Tables(1).Rows.Count
    
    'write to the last row
    ActiveDocument.Tables(1).Cell(lastRow, 1).Range = "your value in last row / column 1"
    ActiveDocument.Tables(1).Cell(lastRow, 2).Range = "your value in last row / column 2"
    
    
    End Sub
    

    你说你的名单只有一行。此代码现在添加一行,并在第1列和第2列中填充等号右侧的值。现在还不清楚UT是什么,它来自哪里。但无论如何,您现在可以使用此代码访问最后的单元格。

    使用
    行。添加不带参数的
    ,新行将插入表的末尾。参数(如
    行的帮助主题中所述。Add
    使代码能够在特定行之前插入新行

    为了使用新行,请声明一个对象变量,并在创建新行时将该行分配给它。使用
    对象也是一个好主意。这样就可以直接寻址对象,而不必总是使用类似
    rng.Tables(index).Rows(index)的东西
    这不仅使读写更简单,而且执行速度更快

    因此,根据问题中的代码,我的建议是:

    Dim tbl as Word.Table, rw as Word.Row
    Set tbl = rng.Tables(1)
    Set rw = tbl.Rows.Add
    rw.Cells(1).Range.Text = "cell content"
    rw.Cells(2).Range.Text = "other cell content"
    

    使用
    行。添加不带参数的
    ,新行将插入表的末尾。参数(如
    行的帮助主题中所述。添加
    使代码能够在特定行之前插入新行

    为了使用新行,请声明一个对象变量,并在创建新行时将该行分配给它。使用
    对象也是一个好主意。这样就可以直接寻址对象,而不必总是使用类似
    rng.Tables(index).Rows(index)的东西
    这不仅使读写更简单,而且执行速度更快

    因此,根据问题中的代码,我的建议是:

    Dim tbl as Word.Table, rw as Word.Row
    Set tbl = rng.Tables(1)
    Set rw = tbl.Rows.Add
    rw.Cells(1).Range.Text = "cell content"
    rw.Cells(2).Range.Text = "other cell content"
    

    保留括号和括号中的所有内容(注释掉)然后再试一次,只有
    行。添加行后添加
    我需要在其中写入值。这是如何做到的。第一次
    文档
    只有一行,但第二次运行宏后,
    文档
    将包含两行,依此类推。根据您的建议
    行。添加
    我如何才能将值写入添加的行?@Cind我想我重新措辞了我的问题,请看一看,把括号和括号里的东西都去掉(把它注释掉)然后再试一次,只有
    行。添加行后添加
    我需要在其中写入值。这是如何做到的。第一次
    文档
    只有一行,但第二次运行宏后,
    文档
    将包含两行,依此类推。根据您的建议
    行。添加
    我如何才能将值写入添加的行?@Cind我想我重新表述我的问题,请看一看,如果您在出现错误的行中删除此“(rng.Tables(1).Rows(2)),那么它应该可以工作。“rng.Tables(1).Rows.Add”就足够了,因为我正在处理范围,所以它不是
    ActiveDocument
    。一行作为标题,两列有“Country”“Partner”已写入文档.1->因为我正在处理范围,所以它不是
    ActiveDocument
    .2->一行作为标题,两列带有“Country”“Partner”已在文档中写入。3->是否有方法写入字符串而不加粗???@IbneAshiq请记住:在堆栈溢出时,每个问题一个查询。请不要继续在注释中扩展您的要求。针对新问题提出新问题。如果删除此“(rng.Tables(1).Rows(2))”在出现错误的行中,“rng.Tables(1).Rows.Add”是足够的,因为我正在处理范围,所以它不是
    ActiveDocument
    。一行作为标题,两列有“Country”“Partner”已写入文档.1->因为我正在处理范围,所以它不是
    ActiveDocument
    .2->一行作为标题,两列带有“Country”“Partner”已在文档中写入。3->是否有方法写入字符串而不加粗???@IbneAshiq请记住:在堆栈溢出中,每个问题一个查询。请不要继续在注释中扩展您的要求。针对新问题提出新问题。