Problems with word bookmarks and report

eyjayioceyjayioc Member Posts: 3
Hi @ all,

i am looking for a solution to fill bookmarks in a word template (without the word managemnet codeunit) in a report.
Can anyone please add a c/al exlample to open the template (*.dot, *.dotx or *.dotm) and fill a bookmark with text?
thanks a lot (i try it for more than 4 hours :oops: )

greetz

eyjay

Comments

  • ErictPErictP Member Posts: 164
    To get you started
    IF NOT ISCLEAR(WinWord) THEN
      CLEAR(WinWord);
    IF NOT CREATE(WinWord) THEN
      EXIT;
    
    WordDocument := WinWord.Documents.Open(pFile);
    
    BMTeller := WordDocument.Bookmarks.Count;
    
    WordBookmarks := WordDocument.Bookmarks;
    
    WHILE (i < BMTeller) DO
      BEGIN
        i += 1;
        iVar := i;
        WordBookmark := WordBookmarks.Item(iVar) ;
        BMMatrix[i] := WordBookmark.Name;
      END;
    
    FOR BMTeller :=1 TO BMTeller DO
      BEGIN
      CASE UPPERCASE(BMMatrix[BMTeller]) OF
        'BMNAAM':     BMFUNC_Naam;
    
        END;
      END;
    
    WordDocument.SaveAs(pFile);
    WordDocument.ActiveWindow.WindowState := 1; // 1 = wdWindowStateMaximize
    WordDocument.Saved :=TRUE;
    
    WinWord.Visible(TRUE);
    
    
    BMFUNC_Naam()
    GoToBookmark('BMNAAM');
    InsertText(SalesHeader."Bill-to Name" + ' ' + SalesHeader."Bill-to Name 2");
    
    GoToBookmark(bookmarkname : Text[30])
    wdGoToBookmark := -1;
    V1 := 0;
    v2 := 0;
    WinWord.Selection.GoTo(wdGoToBookmark,V1,v2,bookmarkname);
    
    InsertText(Text : Text[1024])
    WinWord.Selection.TypeText(Text);
    
  • eyjayioceyjayioc Member Posts: 3
    ErictP wrote:
    To get you started
    IF NOT ISCLEAR(WinWord) THEN
      CLEAR(WinWord);
    IF NOT CREATE(WinWord) THEN
      EXIT;
    
    WordDocument := WinWord.Documents.Open(pFile);
    
    BMTeller := WordDocument.Bookmarks.Count;
    
    WordBookmarks := WordDocument.Bookmarks;
    
    WHILE (i < BMTeller) DO
      BEGIN
        i += 1;
        iVar := i;
        WordBookmark := WordBookmarks.Item(iVar) ;
        BMMatrix[i] := WordBookmark.Name;
      END;
    
    FOR BMTeller :=1 TO BMTeller DO
      BEGIN
      CASE UPPERCASE(BMMatrix[BMTeller]) OF
        'BMNAAM':     BMFUNC_Naam;
    
        END;
      END;
    
    WordDocument.SaveAs(pFile);
    WordDocument.ActiveWindow.WindowState := 1; // 1 = wdWindowStateMaximize
    WordDocument.Saved :=TRUE;
    
    WinWord.Visible(TRUE);
    
    
    BMFUNC_Naam()
    GoToBookmark('BMNAAM');
    InsertText(SalesHeader."Bill-to Name" + ' ' + SalesHeader."Bill-to Name 2");
    
    GoToBookmark(bookmarkname : Text[30])
    wdGoToBookmark := -1;
    V1 := 0;
    v2 := 0;
    WinWord.Selection.GoTo(wdGoToBookmark,V1,v2,bookmarkname);
    
    InsertText(Text : Text[1024])
    WinWord.Selection.TypeText(Text);
    

    hi,

    thanks for that answer, but could you please show an overview of the variables? I wrote the code and the system show's an error Unknown variable item: "WordBookmarks.Item(iVar)"
    thanks a lot

    greetz

    eyjay
  • ErictPErictP Member Posts: 164
        VAR
          WinWord@1000000006 : Automation "{00020905-0000-0000-C000-000000000046} 8.3:{000209FF-0000-0000-C000-000000000046}:'Microsoft Word 11.0 Object Library'.Application";
          WordDocument@1000000005 : Automation "{00020905-0000-0000-C000-000000000046} 8.3:{00020906-0000-0000-C000-000000000046}:'Microsoft Word 11.0 Object Library'.Document";
          WordBookmarks@1000000003 : Automation "{00020905-0000-0000-C000-000000000046} 8.3:{00020967-0000-0000-C000-000000000046}:'Microsoft Word 11.0 Object Library'.Bookmarks";
          WordBookmark@1000000002 : Automation "{00020905-0000-0000-C000-000000000046} 8.3:{00020968-0000-0000-C000-000000000046}:'Microsoft Word 11.0 Object Library'.Bookmark";
          WordSelection@1000000001 : Automation "{00020905-0000-0000-C000-000000000046} 8.3:{00020975-0000-0000-C000-000000000046}:'Microsoft Word 11.0 Object Library'.Selection";
          BMTeller@1000000007 : Integer;
          BMMatrix@1000000000 : ARRAY [100] OF Text[30];
          i@1000000008 : Integer;
          iVar@1000000009 : Variant;
    
Sign In or Register to comment.