Добрый день.
Делаю небольшой вордовый отчет по шаблону, который собирает данные из коллекции документов. В шаблоне есть поле, на место которого вставляется таблица. В будущем не исключена ситуация, что в этот шаблон будет добавлена какая-нибудь другая таблица.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
Проблема в следующем: если в шаблоне появляется еще одна таблица, как мне идентифицировать именно мою, программно формируемую, и к ней добавлять строки? Если точнее, как получить индекс объекта Table? Смотрел хелп Word - свойства "Descr" и "Title" для меня не применимы, т.к. они появились только с 2010. Свойство "ID", как там написано, применимо только для документа, сохраненного как веб-страница.
ЗЫ: Если коряво - прошу не пинать, объяснил как смог. Про POI слышал, но не мой вариант.
Делаю небольшой вордовый отчет по шаблону, который собирает данные из коллекции документов. В шаблоне есть поле, на место которого вставляется таблица. В будущем не исключена ситуация, что в этот шаблон будет добавлена какая-нибудь другая таблица.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
Код:
Dim ws As New NotesUIWorkspace
Dim ses As New NotesSession
Dim wApp As Variant
Dim wDoc As Variant
Dim wTable As Variant
Dim wRange As Variant
Dim i As Long
Dim res As Boolean
Dim curDB As NotesDatabase
Dim doc_1 As NotesDocument
Dim doc_2 As NotesDocument
Dim someDocColl As NotesDocumentCollection
Set curDB = ses.Currentdatabase
Set doc_1 = ws.Currentdocument.Document
Set someDocColl = db.Getview("someView").Getalldocumentsbykey(doc_1.Universalid, True)
Set wApp = CreateObject("Word.Arrlication")
Set wDoc = wApp.Documents.Add("C:\123.doc")
For i=1 To wDoc.FormFields.Count
If wDoc.FormFields(i).Name = "tableAnchor" Then
res = True
End If
Next
Set doc_2 = someDocColl.Getfirstdocument()
While Not doc_2 Is Nothing
If res Then
'если такое поле найдено, то берем range от него
Set wRange = wDoc.FormFields("tableAnchor").Range
Set wTable = wDoc.Tables.Add(wRange, 1, 3)
Else
'если поля нет, добавляем в конец документа
Call wDoc.Characters(wDoc.Characters.Count).Select
Set wRange = wDoc.Application.Selection.Range
End If
'дальше таблица будет наполнена какими то данными
Set doc_2 = someDocColl.Getnextdocument(doc_2)
Wend
Проблема в следующем: если в шаблоне появляется еще одна таблица, как мне идентифицировать именно мою, программно формируемую, и к ней добавлять строки? Если точнее, как получить индекс объекта Table? Смотрел хелп Word - свойства "Descr" и "Title" для меня не применимы, т.к. они появились только с 2010. Свойство "ID", как там написано, применимо только для документа, сохраненного как веб-страница.
ЗЫ: Если коряво - прошу не пинать, объяснил как смог. Про POI слышал, но не мой вариант.