Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 18:21   #1
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию Как удалить строку в Word-таблице XML-средствами?

Код:
Sub Procedure_1()
    
    'Нужно подключить библиотеку: Tools - References.. - Microsoft XML версия.
    Dim myTable As Word.Table
    Dim myXMLDocument As New MSXML2.DOMDocument
    Dim myRow As MSXML2.IXMLDOMElement
    
    '1. Даю таблице VBA-имя "myTable". Через это имя
        'буду обращаться к таблице.
    Set myTable = ActiveDocument.Tables(1)
    
    '2. Формирую XML-объект для работы с Word-документом.
    myXMLDocument.LoadXML myTable.Range.XML
    
    '3. Проходимся по всем строкам таблицы.
    For Each myRow In myXMLDocument.getElementsByTagName("w:tr")
        '4. Как удалить строку?
    Next myRow
        
End Sub

Последний раз редактировалось Скрипт; 18.02.2013 в 18:26.
Скрипт вне форума Ответить с цитированием
Старый 18.02.2013, 19:13   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вот так можно удалить. Но я пока наобум делаю.
Код:
Sub Procedure_1()
    
    'Нужно подключить библиотеку: Tools - References.. - Microsoft XML версия.
    Dim myXMLDocument As New MSXML2.DOMDocument
    Dim myXMLSelection_1 As MSXML2.IXMLDOMSelection
    Dim myXMLSelection_2 As MSXML2.IXMLDOMSelection
    Dim myXMLTable As MSXML2.IXMLDOMElement
    Dim myRow As MSXML2.IXMLDOMElement
    Dim myTable As Word.Table
    Dim myRange As Word.Range
    
    '1. Даю таблице VBA-имя "myTable". Через это имя
        'буду обращаться к таблице.
    Set myTable = ActiveDocument.Tables(1)
    
    '2. Формирую XML-объект для работы с Word-документом.
    myXMLDocument.LoadXML myTable.Range.XML
    
    '3. Получаем коллекцию всех таблиц, которые мы взяли в объект "myXMLDocument".
    Set myXMLSelection_1 = myXMLDocument.getElementsByTagName("w:tbl")
    
    '4. Получаем доступ к первой таблице (порядковый номер первой таблицы ноль).
    Set myXMLTable = myXMLSelection_1.Item(0)
    
    '5. Получаем коллекцию всех строк в таблице.
    Set myXMLSelection_2 = myXMLTable.getElementsByTagName("w:tr")
    
    '6. Получаем доступ к первой строке.
    Set myRow = myXMLSelection_2.Item(0)
    
    '7. Удаляем строку.
    myXMLTable.RemoveChild childNode:=myRow
    
    '4. Вставка изменённой таблицы в конце документа.
     Set myRange = _
        ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, End:=ActiveDocument.Range.End - 1)
     
     myRange.InsertXML myXMLDocument.XML
    
End Sub
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделить значения таблицы в документе word из excel средствами vba xamillion Microsoft Office Word 5 07.11.2010 19:25
Как удалить столбец таблицы средствами VB Kingson Microsoft Office Access 4 08.04.2010 10:46
Удалить строку таблицы Aleksandr БД в Delphi 12 16.03.2010 11:31
Как перевести данные таблицы из Word в Exel средствами Delphi? Pinkygirl Помощь студентам 0 20.12.2009 16:04
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17