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

Тема в разделе "Lotus - Программирование", создана пользователем Eugen, 5 ноя 2014.

  1. Eugen

    Eugen Well-Known Member

    Репутация:
    0
    Регистрация:
    22 мар 2012
    Сообщения:
    177
    Симпатии:
    0
    Добрый день.

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

    <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 слышал, но не мой вариант.
     
  2. swyatogor

    swyatogor Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    24 фев 2014
    Сообщения:
    473
    Симпатии:
    13
    а если пойти другим путём?? заполнять таблицу в экселе))) а потом копипастить в то место где стоит (куда указывает) поле?
     
  3. susinmn

    susinmn Well-Known Member

    Репутация:
    0
    Регистрация:
    16 окт 2007
    Сообщения:
    529
    Симпатии:
    8
    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 'Тут текст'
     
  4. swyatogor

    swyatogor Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    24 фев 2014
    Сообщения:
    473
    Симпатии:
    13
    У мну большое подозрение что нас спрашивают чуток про другое))
    Я подозреваю что в шаблоне уже стоит таблица которую нужно заполнить.. и нас спрашивают, что делать если в шаблоне будет не одна таблица под заполнение, а несколько??.. Если я правильно понял - то Вы в корне не правильно делаете.. Вы (я так опять же понял) привязываетесь к таблице по ее якорю, соответственно хапаете первый попавшийся и на него завязываетесь.. это Вас и пугает.
    Для позиционирования в документе ворда обычно применяют закладки.. при работе с таким доком - позиционируют курсор на нужную закладку (причем не обязательно по порядку их следования в доке), стирают её и вместо неё помещают то, что необходимо..

    типа вот так
    <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">
    Код:
    	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">
    Код:
    'Библиотека 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 wdPasteBitmap					=4
    Const wdPasteDeviceIndependentBitmap  =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 wdArtCreaturesFish	  =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
     
  5. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    335
    именование таблиц в МСО ворд появилось только с 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">
    Код:
    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 Nothing
    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 doesn't 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}
    Redim Preserve tbls(i) As String 'чтобы не обрабатывать исключение в цикле
    'формируем массив из списка (для старого способ обработки)
    Forall m In tblsList
    Redim 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
    Добавлено: код работает и со старым форматом, но тогда заменяет таблицы по порядку следования
    и таки, да - проще удалить таблицу и вставить нужную
    а ваще есть проект
    там иной подход к формированию шаблонов - более интересный и гибкий, чем тупая подстановка таблиц
    формируется некий шаблонизатор и оператору ставится макрос, кот. он может подставлять нужные "поля"
     
  6. Eugen

    Eugen Well-Known Member

    Репутация:
    0
    Регистрация:
    22 мар 2012
    Сообщения:
    177
    Симпатии:
    0
    Думал над этим вариантом, но отложил на потом, если не получится все сделать средствами ворда.

    для того чтобы это сделать, нужно знать индекс таблицы, а как раз его то я и пытаюсь определить

    так я вроде так и делаю...
    Код:
    If wDoc.FormFields(i).Name = "tableAnchor" Then
    res = True
    End If
    Только зачем заморачиваться с курсором, если можно взять range закладки и передать его в параметры создания таблицы? Новая таблица просто заменит это поле.
     
  7. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    335
    Eugen еще раз повторю - у таблицы можно задать имя, если только не используете "окаменевший кал мамонта" в кач-ве МСО, код выше
    и если говорить по эхель - то тогда вообще отказаться от МСО и использовать POI (ссылка выше), получим динамику, кот будет подхватываться прям из кода/файла-конфигурации (последнее - xml или плэйнтекст типа property)
    при этом получим свой docx, кот. будет адекватно воспроизводиться в МСО
     
Загрузка...

Поделиться этой страницей