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">
    Код (LotusScript):
    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
    Сообщения:
    461
    Симпатии:
    13
    а если пойти другим путём?? заполнять таблицу в экселе))) а потом копипастить в то место где стоит (куда указывает) поле?
     
  3. susinmn

    susinmn Well-Known Member

    Репутация:
    0
    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    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
    Сообщения:
    461
    Симпатии:
    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">
    Код (LotusScript):
        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):
    'Библиотека 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.330
    Симпатии:
    329
    именование таблиц в МСО ворд появилось только с 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):
    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
    Думал над этим вариантом, но отложил на потом, если не получится все сделать средствами ворда.

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

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

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