Вставка строки в таблицу word vba

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Rows.Add method (Word)

vbawd10.chm155975780

vbawd10.chm155975780

word

Word.Rows.Add

d84286cb-42b5-a717-f152-0d9c3f1c6d9c

06/08/2017

medium

Rows.Add method (Word)

Returns a Row object that represents a row added to a table.

Syntax

expression.Add ( _BeforeRow_ )

expression Required. A variable that represents a Rows object.

Parameters

Name Required/Optional Data type Description
BeforeRow Optional Variant A Row object that represents the row that will appear immediately below the new row.

Return value

Row

Example

This example inserts a new row before the first row in the selection.

Sub AddARow() 
 If Selection.Information(wdWithInTable) = True Then 
 Selection.Rows.Add BeforeRow:=Selection.Rows(1) 
 End If 
End Sub

This example adds a row to the first table and then inserts the text Cell into this row.

Sub CountCells() 
 Dim tblNew As Table 
 Dim rowNew As Row 
 Dim celTable As Cell 
 Dim intCount As Integer 
 
 intCount = 1 
 Set tblNew = ActiveDocument.Tables(1) 
 Set rowNew = tblNew.Rows.Add(BeforeRow:=tblNew.Rows(1)) 
 For Each celTable In rowNew.Cells 
 celTable.Range.InsertAfter Text:="Cell " & intCount 
 intCount = intCount + 1 
 Next celTable 
End Sub

See also

Rows Collection Object

[!includeSupport and feedback]

3orP

157 / 2 / 3

Регистрация: 27.12.2012

Сообщений: 26

1

05.07.2013, 12:17. Показов 25317. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!

Прошу помочь мне со следующим:

в документе есть 3 таблицы. Во время заполнения 2-ой таблицы из формы нужно сделать так, чтобы при добавлении новой записи создавалась и строчка в которую бы вписывались эти данные
Заранее спасибо!

Вот код, который я сейчас имею:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public i As Integer
 
Private Sub UserForm_Activate()
i = 2
ComboBox1.AddItem "доктора"
ComboBox1.AddItem "кандидата"
ComboBox2.AddItem "архитектуры"
ComboBox2.AddItem "биологических наук"
ComboBox2.AddItem "ветеринарных наук"
End Sub
 
Private Sub CommandButton1_Click()
ActiveDocument.Tables(2).Cell(i, 1).Range = i - 1
ActiveDocument.Tables(2).Cell(i, 2).Range = TextBox1 & ", " & TextBox2 & " // " & TextBox3 & ", " & TextBox4 & "г. №" & TextBox5
i = i + 1
End Sub
 
Private Sub CommandButton4_Click()
ActiveDocument.Tables(2).Cell(i, 1).Range = i - 1
ActiveDocument.Tables(2).Cell(i, 2).Range = TextBox6 & ", " & TextBox7 & ", " & TextBox9 & " г., Электронный доступ: [" & TextBox8 & "]"
i = i + 1
End Sub
 
Private Sub CommandButton6_Click()
ActiveDocument.Tables(2).Cell(i, 1).Range = i - 1
ActiveDocument.Tables(2).Cell(i, 2).Range = TextBox10 & ", " & TextBox11 & ", на соискание степени" & " " & ComboBox1.Text & " " & ComboBox2.Text
i = i + 1
End Sub
 
Private Sub CommandButton8_Click()
ActiveDocument.Tables(2).Cell(i, 1).Range = i - 1
ActiveDocument.Tables(2).Cell(i, 2).Range = TextBox14 & ", " & TextBox15 & " / " & TextBox16 & ", " & TextBox17 & ", " & TextBox18 & " г."
i = i + 1
End Sub



0



S.V.I.N.

5 / 5 / 1

Регистрация: 06.04.2012

Сообщений: 38

16.07.2013, 12:21

2

Уважаемый 3orP,
добавлять новую строку в таблицу можно следующим образом

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
''создаем таблицу
.ActiveDocument.Tables.Add(Range:=.Selection.Range, NumRows:=1, NumColumns:=2)
            With .Selection.Tables(1)
                .Style = "Сетка таблицы"
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = False
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = False
            End with
''''''''''''
 
'' добавляем новую строку в таблицу, если кол-во строк больше 1. Это условие необходимо для того, что бы
'' при первом прогоне у нас не было пустой строки в таблице
if Selection.Tables(1).Rows.Count <> 1 then
     Selection.InsertRowsBelow 1
end if
'''''''''''
 
'''а далее ваш код
ActiveDocument.Tables(1).Cell(i, 1).Range = i - 1
ActiveDocument.Tables(1).Cell(i, 2).Range = TextBox14 & ", " & TextBox15 & " / " & TextBox16 & ", " & TextBox17 & ", " & TextBox18 & " г."
i = i + 1

Добавлено через 8 минут
небольшая поправка

Visual Basic
1
2
3
4
5
6
'' добавляем новую строку в таблицу, если кол-во строк больше 1. Это условие необходимо для того, что бы
'' при первом прогоне у нас не было пустой строки в таблице
If Selection.Tables(1).Cell(1, 1).Range <> "" Then
     Selection.InsertRowsBelow 1
end if
'''''''''''



1



157 / 2 / 3

Регистрация: 27.12.2012

Сообщений: 26

16.07.2013, 14:05

 [ТС]

3

S.V.I.N., спасибо большое!
а если таблица вот такая и надо вставлять строки перед последней строкой «ИТОГО»?

Вложения

Тип файла: docx п.docx (14.1 Кб, 81 просмотров)



0



S.V.I.N.

5 / 5 / 1

Регистрация: 06.04.2012

Сообщений: 38

16.07.2013, 14:40

4

Т.к. строки нужно вставлять перед последней строкой, то для этого нужно посчитать общее кол-во строк в таблице. Затем из полученного числа вычитаем единичку, т.е. мы получим индекс предпоследней строки таблицы. Далее выделяем предпоследнюю строку и вставляем новую строчку в таблицу…

Visual Basic
1
2
3
4
5
6
7
8
If Selection.Tables(1).Cell(1, 1).Range <> "" Then
 
    ''вот тут мы как раз и вычмсляем предпоследний индекс строки таблицы и выделяем его
    Selection.Tables(1).Rows(Selection.Tables(1).Rows.Count - 1).Select  
    
    ''вставляем новую строчку вниз, после выделенной строки
     Selection.InsertRowsBelow 1
End If



1



157 / 2 / 3

Регистрация: 27.12.2012

Сообщений: 26

16.07.2013, 15:02

 [ТС]

5

S.V.I.N., огромное спасибо!



0



Формулировка задачи:

Добрый день. Ломаю голову над казалось бы элементарной задачей. В документе Word существует таблица, уже сформатированная должным образом. В нее необходимо выгружать данные с листа Excel. Копирование / вставка из ячеек проходит,

но мне при этом нужно добавлять строки в середине таблицы в Worde

.
Делаю так

пробовала

Код к задаче: «Вставка строки в уже существующую таблицу в Word»

textual

Dim tblNew As Table
Dim rowNew As Row
 
Set tblNew = ActiveDocument.Tables(2)
'вставка перед 2ой строкой
Set rowNew = tblNew.Rows.Add(BeforeRow:=tblNew.Rows(2))

Полезно ли:

12   голосов , оценка 3.833 из 5

I’m trying to find a way to add lines and information to a prebuilt table in a word document. The table is right now only two lines. The headers and a blank line (2 Columns). How would I go about adding new lines of data to this table. I’ve tried with bookmarks but I have been unable to get the code to work.

I would give a sample of code but my code just fails so I don’t think it would help.

I need to be able to loop through a 2-D array and insert new rows with information from the 2-D array for each time it loops.

Community's user avatar

asked Jun 13, 2013 at 9:52

Tolure's user avatar

2

This is the basic syntax for inserting data into a pre-existing table in Word, from VBA in Excel:

Dim doc As Word.Document
Set doc = GetObject("path to my word document")

With doc.Tables(IndexNumberOfTableYouWant)
  .Cell(DesiredRow, 1).Range.Text = "my column 1 information"
  .Cell(DesiredRow, 2).Range.Text = "my column 2 information"
End With

As long as the proper number of columns is predefined, you can just keep adding rows by incrementing the DesiredRow variable, and Word will append those rows to the table automatically.

answered Jun 13, 2013 at 16:35

Stewbob's user avatar

StewbobStewbob

16.7k9 gold badges66 silver badges107 bronze badges

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки


    1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
    2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
    3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
    4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.

    >
    Вставка строк в таблицу Word
    , Необходимо вставить пустые строки до конца листа

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    03.01.08, 16:26

      Необходимо вставить необходимое количество пустых строк в таблицу, чтобы курсор перешел на следующую страницу. Разрыв не подходит, т.к. на листе должна быть таблица.

      Profi

      Old Bat



      Сообщ.
      #2

      ,
      03.01.08, 16:32

        Moderator

        *****

        Рейтинг (т): 128

        почему не подходит — судя по первой фразе таблица на листе и так уже есть. Опиши конечную цель всех действий.


        kminas



        Сообщ.
        #3

        ,
        03.01.08, 17:08

          Изначально есть одна строка. Количество строк добавляется, по мере заполнения таблицы.
          После окончания раздела необходимо вставить пустые строки и начать заполнение таблицы с нового листа.
          Посчитал. На первой странице помещается 26 строк, на остальных — 28.

          Сообщение отредактировано: kminas — 03.01.08, 20:59


          bi-lya



          Сообщ.
          #4

          ,
          04.01.08, 04:15

            Senior Member

            ****

            Рейтинг (т): 34

            Цитата kminas @ 03.01.08, 17:08

            Посчитал. На первой странице помещается 26 строк, на остальных — 28.

            Кроме того, количество строк зависит от: шрифта, принтера, параметров страницы и т.п.
            Скидал, что пришло в голову:

            ExpandedWrap disabled

              Sub AddStr()

                With Selection

                  nachStr = .Information(wdActiveEndPageNumber)

                  Do Until .Information(wdActiveEndPageNumber) <> nachStr

                    ActiveDocument.Tables(1).Rows.Add

                    .EndKey Unit:=wdStory

                  Loop

                End With

              End Sub

            Предвидя реакцию достопочтенного Old Bat’а и других уважаемых: Selection, конечно, нездоровая весчь, но Rectangles — IMHO — еще более…
            :rolleyes:


            kminas



            Сообщ.
            #5

            ,
            04.01.08, 08:33

              Цитата bi-lya @ 04.01.08, 04:15

              Кроме того, количество строк зависит от: шрифта, принтера, параметров страницы и т.п.
              Скидал, что пришло в голову:

              ExpandedWrap disabled

                Sub AddStr()

                  With Selection

                    nachStr = .Information(wdActiveEndPageNumber)

                    Do Until .Information(wdActiveEndPageNumber) <> nachStr

                      ActiveDocument.Tables(1).Rows.Add

                      .EndKey Unit:=wdStory

                    Loop

                  End With

                End Sub

              Спасибо, я попробую. Но в данном случае не зависит. Параметры страницы установлены в открываемом файле, шрифт тоже заранее установлен, высота строки 8 мм.


              kminas



              Сообщ.
              #6

              ,
              04.01.08, 17:35

                bi-lya, Спасибо, Вы попали в цель!


                kminas



                Сообщ.
                #7

                ,
                09.01.08, 19:18

                  bi-lya
                  Приладил код, работает, но не могу поставить условие, чтобы он не работал при отсутствии строк в таблице (наличии лишь одной строки). Иначе он пропускает первую страницу.


                  bi-lya



                  Сообщ.
                  #8

                  ,
                  10.01.08, 01:53

                    Senior Member

                    ****

                    Рейтинг (т): 34

                    ExpandedWrap disabled

                      Sub AddStr()

                        With Selection

                          If ActiveDocument.Tables(1).Rows.Count > 1 Then

                            »»»’

                          Else

                            ‘ а сюда, например, вставляем разрыв

                          End If

                        End With

                      End Sub


                    kminas



                    Сообщ.
                    #9

                    ,
                    10.01.08, 09:09

                      Цитата bi-lya @ 10.01.08, 01:53

                      ExpandedWrap disabled

                        Sub AddStr()

                          With Selection

                            If ActiveDocument.Tables(1).Rows.Count > 1 Then

                              »»»’

                            Else

                              ‘ а сюда, например, вставляем разрыв

                            End If

                          End With

                        End Sub

                      Спасибо, а где такие параметры можно найти? А то разные варианты перепробовал, а до такого сам не дошел.


                      bi-lya



                      Сообщ.
                      #10

                      ,
                      10.01.08, 11:11

                        Senior Member

                        ****

                        Рейтинг (т): 34

                        Ну вообще-то все свойства и методы можно найти в Object Brouser — нажимаем F2 в VBE и смотрим.
                        :)


                        kminas



                        Сообщ.
                        #11

                        ,
                        10.01.08, 19:49

                          Не VBE, а VBA, наверно. Ничего не нашел. Только

                          ExpandedWrap disabled

                            Rows.Count


                          bi-lya



                          Сообщ.
                          #12

                          ,
                          11.01.08, 00:54

                            Senior Member

                            ****

                            Рейтинг (т): 34

                            VBA — это язык, VBE — это редактор (Editor) ;)
                            Так а вы что хотели бы найти? Смотрите в справке VBA Word Object Model, я думаю будет понятнее.


                            kminas



                            Сообщ.
                            #13

                            ,
                            11.01.08, 20:22

                              Например, Selection
                              ActiveDocument.Tables(1).Rows.Count


                              bi-lya



                              Сообщ.
                              #14

                              ,
                              12.01.08, 02:30

                                Senior Member

                                ****

                                Рейтинг (т): 34

                                Наверное все-таки вам нужен метод Select, я подозреваю. Смотрите Object Brouser — он есть и у Tables, и у Rows

                                ExpandedWrap disabled

                                  ActiveDocument.Tables(1).Select

                                  ActiveDocument.Tables(1).Rows(2).Select

                                Ну и Selection тоже есть


                                kminas



                                Сообщ.
                                #15

                                ,
                                12.01.08, 15:04

                                  Да я Ваш код переписал и пытался найти в Object Brouser. Так вот Members of «Tables»: Application, Count, Creator, NestingLevel, Parent, Add и Item и все.
                                  ActiveDocument вообще нет, а у Document в членах Tables тоже нет.
                                  Может у нас разный Brouser?

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • VB for Application
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0361 ]   [ 16 queries used ]   [ Generated: 15.04.23, 06:48 GMT ]  

                                  Понравилась статья? Поделить с друзьями:

                                  А вот еще интересные статьи:

                                • Вставка символов в текст документа word
                                • Вставка строки в excel нет переноса строк
                                • Вставка символов в word информатика
                                • Вставка символов в документах word
                                • Вставка символов в word alt

                                • 0 0 голоса
                                  Рейтинг статьи
                                  Подписаться
                                  Уведомить о
                                  guest

                                  0 комментариев
                                  Старые
                                  Новые Популярные
                                  Межтекстовые Отзывы
                                  Посмотреть все комментарии