• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Ole -word, как заполнить таблицу в таблице ?

  • Автор темы Автор темы Sandro
  • Дата начала Дата начала
S

Sandro

Прислали долбанный бланк сделанный каким наркоманом, в нём сплошь и рядом таблицы в таблице, это всё надо автоматически заполнять. Обычно делал так

worddoc.Tables(номер таблицы).Cell(строка,столбец).Range.Select
worddoc.Tables(номер таблицы).Cell(строка,столбец).Range.Text="Текст"

Но в шаблоне 2 таблицы и одна вставленна в другую, пытаюсь обратиться к 3-й таблице а такой не ((( Что делать не пойму
 
VBA хелп есть?
есть примеры к TopLevelTables Property, NestingLevel Property,
т.е. к вложенной обращаемся через ячейку внешней, в которой она расположена.
Можно проверять Count, обрабатывать через For Each ...
кстати, если в шаблоне всего 2 таблицы и одна из них вставлена в другую, откуда возьмется еще 3-я? %)
 
Спасиб. Весь день в проблемах ))), голова не варит, таблицы 3. В одну из них вставлена другая. Мануала нет, не установил при установке офиса )))
 
совет - доставьте этот хелп - поможет в некоторых случаях ;)
сама с такими таблицами мало работала - тут надо либо знать, где эта вложенная таблица сидит, либо проверять коллекцию объектов Tables для каждой ячейки нужной таблицы, чтоб найти, в какой ячейке расположена вложенная таблица.

собственно, пример из хелпа нужен Вам только как иллюстрация обращения к внутренним таблицам (строит 3 таблицы, показывает уровень вложенности в 1ю ячейку, выделяет последнюю - самую вложенную):
TopLevelTables Property
Returns a Tables collection that represents the tables at the outermost nesting level in the current range or selection. Read-only.

Remarks
This method returns a collection containing only those tables at the outermost nesting level within the context of the current range or selection. These tables may not be at the outermost nesting level within the entire set of nested tables.

For information about returning a single member of a collection, see Returning an Object from a Collection.

Example
This example creates a new document, creates a nested table with three levels, and then fills the first cell of each table with its nesting level. The example selects the second column of the second-level table and then selects the first of the top-level tables in this selection. The innermost table is selected, even though it isn't a top-level table within the context of the entire set of nested tables.

Код:
Documents.Add
ActiveDocument.Tables.Add Selection.Range, _
3, 3, wdWord9TableBehavior, wdAutoFitContent
With ActiveDocument.Tables(1).Range
.Copy
.Cells(1).Range.Text = .Cells(1).NestingLevel
.Cells(5).Range.PasteAsNestedTable
With .Cells(5).Tables(1).Range
.Cells(1).Range.Text = .Cells(1).NestingLevel
.Cells(5).Range.PasteAsNestedTable
With .Cells(5).Tables(1).Range
.Cells(1).Range.Text = _
.Cells(1).NestingLevel
End With
.Columns(2).Select
Selection.TopLevelTables(1).Select
End With
End With
 
Спасиб OKEN, выручаешь который раз, нашл дистрибутив, хэлп доставил ))))
 
OKEN, ещё вопросик, возникла такая проблемка , в доковском фокументе заполняю поля worddoc.FormFields(№).result ="Текст"
выдаётся ошибка Microsoft Word: Слишком длинная строка.
В самом ворде на поле ограничений по размеру нет там поле до 32000 символов (((( Не пойму откуда эта ошибка ((((
 
не знаю точно, лично я с ворд-полями с длинным текстом не работала, возможно, позже переспрошу.
Заполняли шаблон когда-то через find-replace, а не поля, делили длинную строку на кусочки (порядка 255 символов, насколько я помню)...
 
отписала предложенный RonTermit в лотус-ветке вариант комментарием в тему КБ лотуса ([post="158401"]альтернатива отчету в поля ворд[/post])
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab