Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/39: Рейтинг темы: голосов - 39, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185

Word.application: Как Получить Индекс Таблицы?

04.11.2014, 17:21. Показов 8209. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

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

<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">

LotusScript
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
35
36
37
38
39
40
41
42
43
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 Nothyng
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 слышал, но не мой вариант.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2014, 17:21
Ответы с готовыми решениями:

Word.Application и области редактирования
Не совсем к лотус разделу, проблема более общая. Есть шаблонный файл docx с несколькими разрешенными областями редактирования. Хочу...

Как получить индекс строки таблицы DataTable
Как получить индекс поля в строке таблицы DataTable ? Получаю значение поля так DataRow row = xxxDataSet.table.Rows ; int value =...

Как получить информацию из таблицы в word?
Есть word документ. В нем есть текст и таблица. Мне нужны данные только из таблицы. Пока пытаюсь представить всё содержимое word...

6
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 467
04.11.2014, 20:36
а если пойти другим путём?? заполнять таблицу в экселе))) а потом копипастить в то место где стоит (куда указывает) поле?
0
0 / 0 / 0
Регистрация: 12.10.2007
Сообщений: 522
04.11.2014, 21:15
Цитата Сообщение от Eugen
Добрый день.

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

...

Проблема в следующем: если в шаблоне появляется еще одна таблица, как мне идентифицировать именно мою, программно формируемую, и к ней добавлять строки? Если точнее, как получить индекс объекта Table? Смотрел хелп Word - свойства "Descr" и "Title" для меня не применимы, т.к. они появились только с 2010. Свойство "ID", как там написано, применимо только для документа, сохраненного как веб-страница.
ЗЫ: Если коряво - прошу не пинать, объяснил как смог. Про POI слышал, но не мой вариант.
Set wordAppObject = CreateObject("Word.Application")
Set ActiveDocument = wordAppObject.Documents.Add(TempFile)

Set DrawTable = ActiveDocument.Tables(n)

Добавление строк и заполнение:
DrawTable.Rows.Add
DrawTable.Cell(i+2,1).Range.InsertAfter Тут текст
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 467
05.11.2014, 06:55
У мну большое подозрение что нас спрашивают чуток про другое))
Я подозреваю что в шаблоне уже стоит таблица которую нужно заполнить.. и нас спрашивают, что делать если в шаблоне будет не одна таблица под заполнение, а несколько??.. Если я правильно понял - то Вы в корне не правильно делаете.. Вы (я так опять же понял) привязываетесь к таблице по ее якорю, соответственно хапаете первый попавшийся и на него завязываетесь.. это Вас и пугает.
Для позиционирования в документе ворда обычно применяют закладки.. при работе с таким доком - позиционируют курсор на нужную закладку (причем не обязательно по порядку их следования в доке), стирают её и вместо неё помещают то, что необходимо..

типа вот так
<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">

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Set wObj = Createobject("Word.Application")
wObj.Visible = True
TmpDocName = Environ("Temp") & "\" & TmpDocName
Call    object.ExtractFile(tmpDocname)
Msgbox tmpDocname
wObj.Documents.Add TmpDocName  работа с шаблоном (открытие файла)
bookmark01 – имя закладки определенной в MS Word
начинаем заполнение документа
Set wordoc = wobj.activedocument
wObj.Selection.GoTo wdGoToBookmark, , , "date" переход к закладке
wObj.Selection.Delete wdCharacter, 1  удаление закладки и текста закладки, курсор остается на месте закладки
wObj.Selection.TypeText datetostring(uidoc.Document.GetItemValue("Date_doc")(0),3)
wObj.Selection.GoTo wdGoToBookmark, , , "from" переход к закладке
wObj.Selection.Delete wdCharacter, 1  удаление закладки и текста закладки, курсор остается на месте закладки
wObj.Selection.TypeText (uidoc.FieldGetText("user"))

Добавлено: <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">

LotusScript
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
Библиотека wdConst
Константы для MS Word
 
Const wdAlignPageNumberLeft         =0
Const wdAlignPageNumberCenter        =1
Const wdAlignPageNumberRight          =2
Const wdAlignPageNumberInside        =3
Const wdAlignPageNumberOutside       =4
 
Const wdBorderTop        =-1
Const wdBorderLeft       =-2
Const wdBorderBottom      =-3
Const wdBorderRight     =-4
Const wdBorderHorizontal  =-5
Const wdBorderVertical   =-6
 
Const wdBorderDiagonalDown  =-7
Const wdBorderDiagonalUp     =-8
 
Const wdStyleTypeParagraph  =1
Const wdStyleTypeCharacter  =2
 
Const wdCharacter           =1
Const wdWord                 =2
Const wdSentence             =3
Const wdParagraph           =4
Const wdLine                 =5
Const wdStory               =6
Const wdScreen            =7
Const wdSection          =8
Const wdColumn            =9
Const wdRow              =10
Const wdWindow            =11
Const wdCell                 =12
Const wdCharacterFormatting =13
Const wdParagraphFormatting =14
Const wdTable               =15
Const wdItem                 =16
 
Const wdRowHeightAuto     =0
Const wdRowHeightAtLeast    =1
Const wdRowHeightExactly    =2
 
Const wdInsertCellsShiftRight       =0
Const wdInsertCellsShiftDown         =1
Const wdInsertCellsEntireRow         =2
Const wdInsertCellsEntireColumn  =3
 
Const wdDeleteCellsShiftLeft         =0
Const wdDeleteCellsShiftUp        =1
Const wdDeleteCellsEntireRow         =2
Const wdDeleteCellsEntireColumn  =3
 
Const wdAdjustNone           =0
Const wdAdjustProportional   =1
Const wdAdjustFirstColumn     =2
Const wdAdjustSameWidth      =3
 
Const wdAlignParagraphLeft   =0
Const wdAlignParagraphCenter    =1
Const wdAlignParagraphRight  =2
Const wdAlignParagraphJustify  =3
 
Const wdAlignParagraphDistribute =4
 
Const wdAlignRowLeft            =0
Const wdAlignRowCenter       =1
Const wdAlignRowRight         =2
 
Const wdAlignTabLeft            =0
Const wdAlignTabCenter       =1
Const wdAlignTabRight         =2
Const wdAlignTabDecimal      =3
Const wdAlignTabBar          =4
Const wdAlignTabList            =6
 
Const wdAlignVerticalTop        =0
Const wdAlignVerticalCenter  =1
Const wdAlignVerticalJustify    =2
Const wdAlignVerticalBottom  =3
 
Const wdCellAlignVerticalTop    =0
Const wdCellAlignVerticalCenter =1
Const wdCellAlignVerticalBottom =3
 
Const wdPageBreak                =7
 
Const wdWindowStateNormal    =0
Const wdWindowStateMaximize  =1
Const wdWindowStateMinimize  =2
Const wdKeyPause              =19
Const wdKeyEsc               =27
Const wdKeySpacebar         =32
Const wdKeyPageUp            =33
Const wdKeyPageDown         =34
Const wdKeyEnd               =35
Const wdKeyHome             =36
Const wdKeyInsert            =45
Const wdKeyDelete            =46
Const wdKeyNumeric0         =96
Const wdKeyNumeric1         =97
Const wdKeyNumeric2         =98
Const wdKeyNumeric3         =99
Const wdKeyNumeric4         =100
Const wdKeyNumeric5         =101
Const wdKeyNumeric6         =102
Const wdKeyNumeric7         =103
Const wdKeyNumeric8         =104
Const wdKeyNumeric9         =105
Const wdKeyNumericMultiply   =106
Const wdKeyNumericAdd        =107
Const wdKeyNumericSubtract   =109
Const wdKeyNumericDecimal    =110
Const wdKeyNumericDivide      =111
Const wdKeyF1                =112
Const wdKeyF2                =113
Const wdKeyF3                =114
Const wdKeyF4                =115
Const wdKeyF5                =116
Const wdKeyF6                =117
Const wdKeyF7                =118
Const wdKeyF8                =119
Const wdKeyF9                =120
Const wdKeyF10               =121
Const wdKeyF11               =122
Const wdKeyF12               =123
Const wdKeyF13               =124
Const wdKeyF14               =125
Const wdKeyF15               =126
Const wdKeyF16               =127
Const wdKeyScrollLock        =145
Const wdKeySemiColon          =186
Const wdKeyEquals            =187
Const wdKeyComma              =188
Const wdKeyHyphen            =189
Const wdKeyPeriod            =190
Const wdKeySlash              =191
Const wdKeyBackSingleQuote   =192
Const wdKeyOpenSquareBrace   =219
Const wdKeyBackSlash          =220
Const wdKeyCloseSquareBrace =221
Const wdKeySingleQuote       =222
 
Const wdOLELink  =0
Const wdOLEEmbed     =1
Const wdOLEControl  =2
 
Const wdOLEVerbPrimary           =0
Const wdOLEVerbShow             =-1
Const wdOLEVerbOpen             =-2
Const wdOLEVerbHide             =-3
Const wdOLEVerbUIActivate        =-4
Const wdOLEVerbInPlaceActivate   =-5
Const wdOLEVerbDiscardUndoState =-6
 
Const wdInLine          =0
Const wdFloatOverText    =1
 
Const wdLeftPortrait     =0
Const wdCenterPortrait  =1
Const wdRightPortrait    =2
Const wdLeftLandscape    =3
Const wdCenterLandscape  =4
Const wdRightLandscape  =5
Const wdLeftClockwise    =6
Const wdCenterClockwise  =7
Const wdRightClockwise  =8
 
Const wdFullBlock        =0
Const wdModifiedBlock    =1
Const wdSemiBlock        =2
 
Const wdLetterTop        =0
Const wdLetterBottom     =1
Const wdLetterLeft      =2
Const wdLetterRight   =3
 
Const wdSalutationInformal =0
Const wdSalutationFormal    =1
Const wdSalutationBusiness =2
Const wdSalutationOther  =3
 
Const wdGenderFemale     =0
Const wdGenderMale    =1
Const wdGenderNeutral   =2
Const wdGenderUnknown   =3
 
Const wdMove             =0
Const wdExtend        =1
 
Const wdUn            =9999999
Const wdToggle        =9999998
Const wdForward      =1073741823
Const wdBackward         =-1073741823
Const wdAutoPosition     =0
Const wdFirst           =1
Const wdCreatorCode  =1297307460
 
Const wdPasteOLEObject               =0
Const wdPasteRTF                      =1
Const wdPasteText                    =2
Const wdPasteMetafilePicture          =3
Const wdPasteBytmap                 =4
Const wdPasteDeviceIndependentBytmap  =5
Const wdPasteHyperlink               =7
Const wdPasteShape                   =8
Const wdPasteEnhancedMetafile        =9
 
Const wdPrintDocumentContent    =0
Const wdPrintProperties      =1
Const wdPrintComments         =2
Const wdPrintStyles          =3
Const wdPrintAutoTextEntries    =4
Const wdPrintKeyAssignments  =5
Const wdPrintEnvelope         =6
 
Const wdPrintAllPages         =0
Const wdPrintOddPagesOnly     =1
Const wdPrintEvenPagesOnly   =2
 
Const wdPrintAllDocument        =0
Const wdPrintSelection       =1
Const wdPrintCurrentPage        =2
Const wdPrintFromTo          =3
Const wdPrintRangeOfPages     =4
 
Const wdSpelling                =0
Const wdGrammar              =1
Const wdThesaurus             =2
Const wdHyphenation          =3
Const wdSpellingComplete        =4
Const wdSpellingCustom       =5
Const wdSpellingLegal         =6
Const wdSpellingMedical      =7
 
Const wdHangulHanjaConversion        =8
Const wdHangulHanjaConversionCustom  =9
 
Const wdSpellword         =0
Const wdWildcard            =1
Const wdAnagram          =2
 
Const wdSpellingCorrect         =0
Const wdSpellingNotInDictionary =1
Const wdSpellingCapitalization   =2
 
Const wdSpellingError     =0
Const wdGrammaticalError    =1
 
Const wdInlineShapeEmbeddedOLEObject =1
Const wdInlineShapeLinkedOLEObject  =2
Const wdInlineShapePicture          =3
Const wdInlineShapeLinkedPicture     =4
Const wdInlineShapeOLEControlObject  =5
 
Const wdTiled           =0
Const wdIcons           =1
 
Const wdSelStartActive  =1
Const wdSelAtEOL         =2
Const wdSelOvertype  =4
Const wdSelActive       =8
Const wdSelReplace    =16
 
Const wdAutoVersionOff    =0
Const wdAutoVersionOnClose  =1
 
Const wdOrganizerObjectStyles        =0
Const wdOrganizerObjectAutoText   =1
Const wdOrganizerObjectCommandBars  =2
Const wdOrganizerObjectProjectItems  =3
 
Const wdMatchParagraphMark    =65551
Const wdMatchTabCharacter       =9
Const wdMatchCommentMark         =5
Const wdMatchAnyCharacter       =65599
Const wdMatchAnyDigit           =65567
Const wdMatchAnyLetter        =65583
Const wdMatchCaretCharacter  =11
Const wdMatchColumnBreak         =14
Const wdMatchEmDash          =8212
Const wdMatchEnDash          =8211
Const wdMatchEndnoteMark         =65555
Const wdMatchField            =19
Const wdMatchFootnoteMark       =65554
Const wdMatchGraphic             =1
Const wdMatchManualLineBreak     =65551
Const wdMatchManualPageBreak     =65564
Const wdMatchNonbreakingHyphen  =30
Const wdMatchNonbreakingSpace   =160
Const wdMatchOptionalHyphen  =31
Const wdMatchSectionBreak       =65580
Const wdMatchWhiteSpace      =65655
 
Const wdFindStop      =0
Const wdFindContinue  =1
Const wdFindAsk     =2
 
Const wdActiveEndAdjustedPageNumber              =1
Const wdActiveEndSectionNumber                   =2
Const wdActiveEndPageNumber                      =3
Const wdNumberOfPagesInDocument                  =4
Const wdHorizontalPositionRelativeToPage            =5
Const wdVerticalPositionRelativeToPage           =6
Const wdHorizontalPositionRelativeToTextBoundary   =7
Const wdVerticalPositionRelativeToTextBoundary  =8
Const wdFirstCharacterColumnNumber               =9
Const wdFirstCharacterLineNumber                    =10
Const wdFrameIsSelected                          =11
Const wdWithInTable                              =12
Const wdStartOfRangeRowNumber                     =13
Const wdEndOfRangeRowNumber                      =14
Const wdMaximumNumberOfRows                      =15
Const wdStartOfRangeColumnNumber                    =16
Const wdEndOfRangeColumnNumber                   =17
Const wdMaximumNumberOfColumns                   =18
Const wdZoomPercentage                           =19
Const wdSelectionMode                             =20
Const wdCapsLock                                    =21
Const wdNumLock                                  =22
Const wdOverType                                    =23
Const wdRevisionMarking                          =24
Const wdInFootnoteEndnotePane                     =25
Const wdInCommentPane                             =26
Const wdInHeaderFooter                           =28
Const wdAtEndOfRowMarker                            =31
Const wdReferenceOfType                          =32
Const wdHeaderFooterType                            =33
Const wdInMasterDocument                            =34
Const wdInFootnote                               =35
Const wdInEndnote                                 =36
Const wdInWordMail                               =37
Const wdInClipboard                              =38
 
Const wdWrapSquare       =0
Const wdWrapTight         =1
Const wdWrapThrough      =2
Const wdWrapNone            =3
Const wdWrapTopBottom     =4
 
Const wdWrapBoth            =0
Const wdWrapLeft            =1
Const wdWrapRight         =2
Const wdWrapLargest      =3
 
Const wdOutlineLevel1           =1
Const wdOutlineLevel2           =2
Const wdOutlineLevel3           =3
Const wdOutlineLevel4           =4
Const wdOutlineLevel5           =5
Const wdOutlineLevel6           =6
Const wdOutlineLevel7           =7
Const wdOutlineLevel8           =8
Const wdOutlineLevel9           =9
Const wdOutlineLevelBodyText     =10
 
Const wdTextOrientationHorizontal  =0
Const wdTextOrientationUpward     =2
Const wdTextOrientationDownward  =3
 
Const wdTextOrientationVerticalFarEast         =1
Const wdTextOrientationHorizontalRotatedFarEast  =4
 
Const wdArtApples            =1
Const wdArtMapleMuffins     =2
Const wdArtCakeSlice          =3
Const wdArtCandyCorn          =4
Const wdArtIceCreamCones      =5
Const wdArtChampagneBottle   =6
Const wdArtPartyGlass        =7
Const wdArtChristmasTree      =8
Const wdArtTrees              =9
Const wdArtPalmsColor        =10
Const wdArtBalloons3Colors   =11
Const wdArtBalloonsHotAir    =12
Const wdArtPartyFavor        =13
Const wdArtConfettiStreamers  =14
Const wdArtHearts            =15
Const wdArtHeartBalloon     =16
Const wdArtStars3D           =17
Const wdArtStarsShadowed      =18
Const wdArtStars              =19
Const wdArtSun               =20
Const wdArtEarth2            =21
Const wdArtEarth1            =22
Const wdArtPeopleHats        =23
Const wdArtSombrero         =24
Const wdArtPencils           =25
Const wdArtPackages         =26
Const wdArtClocks            =27
Const wdArtFirecrackers     =28
Const wdArtRings              =29
Const wdArtMapPins           =30
Const wdArtConfetti         =31
Const wdArtCreaturesButterfly =32
Const wdArtCreaturesLadyBug =33
Const wdArtCreaturesFysh      =34
Const wdArtBirdsFlight       =35
Const wdArtScaredCat          =36
Const wdArtBats             =37
Const wdArtFlowersRoses     =38
Const wdArtFlowersRedRose    =39
Const wdArtPoinsettias       =40
Const wdArtHolly              =41
Const wdArtFlowersTiny       =42
Const wdArtFlowersPansy     =43
Const wdArtFlowersModern2    =44
Const wdArtFlowersModern1    =45
Const wdArtWhiteFlowers     =46
Const wdArtVine             =47
Const wdArtFlowersDaisies    =48
Const wdArtFlowersBlockPrint  =49
Const wdArtDecoArchColor      =50
Const wdArtFans             =51
Const wdArtFilm             =52
Const wdArtLightning1        =53
Const wdArtCompass           =54
Const wdArtDoubleD           =55
Const wdArtClassicalWave      =56
Const wdArtShadowedSquares   =57
Const wdArtTwistedLines1      =58
Const wdArtWaveline         =59
Const wdArtQuadrants          =60
Const wdArtCheckedBarColor   =61
Const wdArtSwirligig          =62
Const wdArtPushPinNote1     =63
Const wdArtPushPinNote2     =64
Const wdArtPumpkin1         =65
Const wdArtEggsBlack          =66
Const wdArtCup               =67
Const wdArtHeartGray          =68
Const wdArtGingerbreadMan    =69
Const wdArtBabyPacifier     =70
Const wdArtBabyRattle        =71
Const wdArtCabins            =72
Const wdArtHouseFunky        =73
Const wdArtStarsBlack        =74
Const wdArtSnowflakes        =75
Const wdArtSnowflakeFancy    =76
Const wdArtSkyrocket          =77
Const wdArtSeattle           =78
Const wdArtMusicNotes        =79
Const wdArtPalmsBlack        =80
Const wdArtMapleLeaf          =81
Const wdArtPaperClips        =82
Const wdArtShorebirdTracks   =83
Const wdArtPeople            =84
Const wdArtPeopleWaving     =85
Const wdArtEclipsingSquares2  =86
Const wdArtHypnotic         =87
Const wdArtDiamondsGray     =88
Const wdArtDecoArch         =89
Const wdArtDecoBlocks        =90
Const wdArtCirclesLines     =91
Const wdArtPapyrus           =92
Const wdArtWoodwork         =93
Const wdArtWeavingBraid     =94
Const wdArtWeavingRibbon      =95
Const wdArtWeavingAngles      =96
Const wdArtArchedScallops    =97
Const wdArtSafari            =98
Const wdArtCelticKnotwork    =99
Const wdArtCrazyMaze          =100
Const wdArtEclipsingSquares1  =101
Const wdArtBirds              =102
Const wdArtFlowersTeacup      =103
Const wdArtNorthwest          =104
Const wdArtSouthwest          =105
Const wdArtTribal6           =106
Const wdArtTribal4           =107
Const wdArtTribal3           =108
Const wdArtTribal2           =109
Const wdArtTribal5           =110
Const wdArtXIllusions        =111
Const wdArtZanyTriangles      =112
Const wdArtPyramids         =113
Const wdArtPyramidsAbove      =114
Const wdArtConfettiGrays      =115
Const wdArtConfettiOutline   =116
Const wdArtConfettiWhite      =117
Const wdArtMosaic            =118
Const wdArtLightning2        =119
Const wdArtHeebieJeebies      =120
Const wdArtLightBulb          =121
Const wdArtGradient         =122
Const wdArtTriangleParty      =123
Const wdArtTwistedLines2      =124
Const wdArtMoons              =125
Const wdArtOvals              =126
Const wdArtDoubleDiamonds    =127
Const wdArtChainLink          =128
Const wdArtTriangles          =129
Const wdArtTribal1           =130
Const wdArtMarqueeToothed    =131
Const wdArtSharksTeeth       =132
Const wdArtSawtooth         =133
Const wdArtSawtoothGray     =134
Const wdArtPostageStamp     =135
Const wdArtWeavingStrips      =136
Const wdArtZigZag            =137
Const wdArtCrossStitch       =138
Const wdArtGems             =139
Const wdArtCirclesRectangles  =140
Const wdArtCornerTriangles   =141
Const wdArtCreaturesInsects =142
Const wdArtZigZagStitch     =143
Const wdArtCheckered          =144
Const wdArtCheckedBarBlack   =145
Const wdArtMarquee           =146
Const wdArtBasicWhiteDots    =147
Const wdArtBasicWideMidline =148
Const wdArtBasicWideOutline =149
Const wdArtBasicWideInline   =150
Const wdArtBasicThinLines    =151
Const wdArtBasicWhiteDashes =152
Const wdArtBasicWhiteSquares  =153
Const wdArtBasicBlackSquares  =154
Const wdArtBasicBlackDashes =155
Const wdArtBasicBlackDots    =156
Const wdArtStarsTop         =157
Const wdArtCertificateBanner  =158
Const wdArtHandmade1          =159
Const wdArtHandmade2          =160
Const wdArtTornPaper          =161
Const wdArtTornPaperBlack    =162
Const wdArtCouponCutoutDashes =163
Const wdArtCouponCutoutDots =164
 
Const wdBorderDistanceFromText    =0
Const wdBorderDistanceFromPageEdge  =1
 
Const wdOrientPortrait    =0
Const wdOrientLandscape  =1
Const wdReplaceNone      =0
Const wdReplaceOne       =1
Const wdReplaceAll       =2
 
Const wdFontBiasDontCare    =255
Const wdFontBiasDefault  =0
Const wdFontBiasFareast  =1
 
* WdGoToItem
Const wdGoToBookmark             =-1
Const wdGoToSection          =0
Const wdGoToPage                 =1
Const wdGoToTable               =2
Const wdGoToLine                 =3
Const wdGoToFootnote             =4
Const wdGoToEndnote          =5
Const wdGoToComment          =6
Const wdGoToField               =7
Const wdGoToGraphic          =8
Const wdGoToObject            =9
Const wdGoToEquation             =10
Const wdGoToHeading          =11
Const wdGoToPercent          =12
Const wdGoToSpellingError       =13
Const wdGoToGrammaticalError     =14
Const wdGoToProofreadingError   =15
 
* WdGoToDirection
Const wdGoToFirst         =1
Const wdGoToLast            =-1
Const wdGoToNext            =2
Const wdGoToRelative        =2
Const wdGoToPrevious        =3
Const wdGoToAbsolute        =1
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.11.2014, 12:26
именование таблиц в МСО ворд появилось только с 2010 (ЕМНИП) и формат (возможно) д.б. docx<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">

LotusScript
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Function ReplaceTablesName(NDC As NotesDocumentCollection, worddoc As Variant) As Boolean
On Error Goto ErrH
Dim tblsList List As String
Dim fname As String, doc As NotesDocument
Set doc=NDC.GetFirstDocument
Dim i As Integer
перебираем документы таблиц, выгружаем файлы, заполняем список
Do While Not doc Is Nothyng
Dim fList List As String
Erase fList
fname=DetachDocFiles(doc, {}, fList)
Print doc.UniversalID
If Len(fname)>0 Then
tblsList(Ucase(doc.GetItemValue(NAME_FIELD)(0)))=fname
Print {table name:} &doc.GetItemValue(NAME_FIELD)(0)
i=i+1
End If
Set doc=NDC.GetNextDocument(doc)
Loop
If i<1 Then Print {table files doesnt exist}:Exit Function не трогать таблицы - если нет файлов
i=0
Dim rngS
ищем заголовки в таблицах
Dim tblsObjList List As Variant
Print {Tables Count:} &Cstr(worddoc.Tables.Count)
Forall tbl In worddoc.Tables
Dim s As String
s={}
On Error Resume Next
s=Ucase(tbl.Title)
On Error Goto ErrH
If Len(s)>0 Then
Set tblsObjList(s)=tbl
Print {Search table for replace:} &s
If Iselement(tblsList(s)) Then
fname=tblsList(s)
If Len(fname)>0 Then
rngS = tbl.Range.Start
tbl.Delete
Call worddoc.Range(rngS, rngS).InsertFile(fname,,False)
Print {replaced:} &s
i=i+1
End If
End If
End If
End Forall
If i>0 Then Print {Tables with title exist}:Exit Function
алгоритм для замены в старом формате Word (не было tbl.Title)
Dim tbls() As String
Print {tables w/o titles}
Redym Preserve tbls(i) As String чтобы не обрабатывать исключение в цикле
формируем массив из списка (для старого способ обработки)
Forall m In tblsList
Redym Preserve tbls(i) As String
tbls(i)=m
i=i+1
End Forall
i=0
Forall tbl In worddoc.Tables
fname={}
If Not i>Ubound(tbls) Then
If Len(tbls(i)) >0 Then fname=tbls(i)
If Len(fname)>0 Then
rngS = tbl.Range.Start
tbl.Delete
Call worddoc.Range(rngS, rngS).InsertFile(fname,,False)
End If
End If
i=i+1
End Forall
ReplaceTablesName=True
Quit:
Exit Function
ErrH:
RaiseError
Resume Quit
End Function
Добавлено: код работает и со старым форматом, но тогда заменяет таблицы по порядку следования
и таки, да - проще удалить таблицу и вставить нужную
а ваще есть проект
там иной подход к формированию шаблонов - более интересный и гибкий, чем тупая подстановка таблиц
формируется некий шаблонизатор и оператору ставится макрос, кот. он может подставлять нужные "поля"
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
06.11.2014, 10:55
Цитата Сообщение от swyatogor
а если пойти другим путём?? заполнять таблицу в экселе))) а потом копипастить в то место где стоит (куда указывает) поле?
Думал над этим вариантом, но отложил на потом, если не получится все сделать средствами ворда.



Цитата Сообщение от susinmn
Set DrawTable = ActiveDocument.Tables(n)
для того чтобы это сделать, нужно знать индекс таблицы, а как раз его то я и пытаюсь определить



Цитата Сообщение от swyatogor
Для позиционирования в документе ворда обычно применяют закладки.. при работе с таким доком - позиционируют курсор на нужную закладку (причем не обязательно по порядку их следования в доке), стирают её и вместо неё помещают то, что необходимо..
так я вроде так и делаю...

LotusScript
1
2
3
If wDoc.FormFields(i).Name = "tableAnchor" Then
res = True
End If
Только зачем заморачиваться с курсором, если можно взять range закладки и передать его в параметры создания таблицы? Новая таблица просто заменит это поле.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
06.11.2014, 12:00
Eugen еще раз повторю - у таблицы можно задать имя, если только не используете "окаменевший кал мамонта" в кач-ве МСО, код выше
и если говорить по эхель - то тогда вообще отказаться от МСО и использовать POI (ссылка выше), получим динамику, кот будет подхватываться прям из кода/файла-конфигурации (последнее - xml или плэйнтекст типа property)
при этом получим свой docx, кот. будет адекватно воспроизводиться в МСО
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2014, 12:00
Помогаю со студенческими работами здесь

Как получить данные из таблицы Word
Имеется файл Word. В этом файле имеется таблица(4 на 3). Нужно перенести эти данные в Excel и решить матрицу(матрицу уже решать с помощью...

Как с помощью VBA получить значение с ячейки таблицы MS Word в переменую?
Как с помощью VBA получить значение с ячейки таблицы MS Word в переменую. Range(x,y).???

Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD
Ув. прпограммисты, подскажите пожалуйста, как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD. Зараннее...

Как зарегистрировать в реестре сервер как Word.Application, но со своим CLSIDом?
Добрый день! Вообще не в теме OLE-серверов скажу сразу. Подскажите как их правильно писать и регистрировать в системе. Само задание:...

Получить данные из таблицы документа Word
Привет! Стоит следующая задача:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Есть вордовый документ&lt;/LI&gt;&lt;LI&gt;Есть документ Excel&lt;/LI&gt;&lt;LI&gt;Необходимо взять данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru