VSTO Word - добавление строки таблицы при нажатии кнопки на панели задач

У меня есть проект VSTO, в котором нажатие кнопки на ленте открывает новый документ Word с определенным шаблоном и открывает его с настраиваемой панелью задач. На этой панели есть кнопка, при нажатии которой я хочу добавить строку в таблицу, которая существует в шаблоне документа.

В настоящее время я просто получаю исключение «сбой команды» во время выполнения, когда нажимается кнопка на панели задач. Вот и весь класс. Как вы можете видеть, я пробовал два способа сделать это, оба терпят неудачу:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using word = Microsoft.Office.Interop.Word;

namespace TestWordAddin2010
{
    public partial class NewDescDMtaskPane : UserControl
    {
        public NewDescDMtaskPane()
        {
            InitializeComponent();
        }

        private void addSpare_Click(object sender, EventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows.Add(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[1]);  //this doesn't work

            //word.Table wordTable = Globals.ThisAddIn.Application.ActiveDocument.Tables[1];
            //wordTable.Rows.Add(wordTable.Rows[1]);  //neither does this work
        }
    }
}

Любая помощь приветствуется.


person Can'tCodeWon'tCode    schedule 01.12.2015    source источник
comment
Каким образом это не работает? Вы получаете ошибку? Строка добавлена ​​не туда? Пожалуйста, предоставьте больше информации.   -  person Cindy Meister    schedule 01.12.2015
comment
Я получаю исключение «Command Failed» в визуальной студии. Никакие строки не добавляются ни в одну таблицу.   -  person Can'tCodeWon'tCode    schedule 01.12.2015
comment
Ах, моя ошибка. У меня была скрытая таблица в самом верху с элементами управления содержимым. Когда я изменил ее на «Таблицы [2]», она добавила строку в нужную мне таблицу. Однако на самом деле я намеревался использовать элементы управления содержимым и в этой таблице. Означает ли это, что я не могу добавлять строки в таблицу с помощью элемента управления содержимым?? Очевидно, я могу поэкспериментировать, но вы знаете ответ?   -  person Can'tCodeWon'tCode    schedule 02.12.2015
comment
Не могли бы вы указать точные шаги воспроизведения? И какая версия ворда? Я могу посмотреть на это завтра, если я знаю точный сценарий... Элементы управления содержимым FWIW не должны препятствовать добавлению строки.   -  person Cindy Meister    schedule 02.12.2015


Ответы (1)


Скорее всего, ваша первая таблица содержит объединенные ячейки. Тогда вы не сможете получить доступ к отдельным строкам в коллекции Rows.

В качестве обходного пути вы можете использовать объект Selection следующим образом:

ActiveDocument.Tables(1).Range.Select();
Application.Selection.Collapse();
Application.Selection.InsertRowsAbove();
person Dirk Vollmar    schedule 02.12.2015