Thanks, this looks like the answer I was looking for.

-----Original Message-----
From: Amund [mailto:[EMAIL PROTECTED]
Sent: 26. august 2004 11:41
To: [EMAIL PROTECTED]
Subject: Re: [development-axapta] Create Word document from code

Hi,
you could have a look at Tools->Development tools->Wizards->COM Class 
Wrapper Wizard, check out how things are done in the SysExcel*, 
SysMicrosoftAgent or SysOutlook* classes, or create your own class in
the 
lines of:

(Note: All error and version checking has been left out.)

class MyMSWord
{
     COM         wdApp;          // Word
     COM         wdDocuments;    // All documents
     COM         wdDocument;     // Current document
     COM         wdBookmark;     // Current bookmark

     container   wdBookmarksEnum;
}

void new()
{
     wdApp           = new COM("Word.Application");
     wdDocuments     = COM::createFromObject(wdApp.Documents());
     wdBookmarksEnum = this.bookmarksEnumerate();
}

// Create a new document, based on template
boolean documentAdd(str _template)
{
     wdDocument  = wdDocuments.Add(_template); // Add method of Word 
"Documents" object
     wdSelection = wdApp.Selection();          // The added document is
now 
the active one
     return true;
}

// Inserting text into bookmark
void bookmarkText(str _bookmark, str _text)
{
     this.bookmarkSelect(this.bookmarkIndex(_bookmark)); // Selecting 
bookmark
     wdSelection.Text(_text); // Insert text into bookmark
}

// Select a bookmark by index
boolean bookmarkSelect(int _bookmarkIndex)
{
     COM cBookmarks;
     ;

     if (_bookmarkIndex <= conlen(wdBookmarksEnum))
     {
         cBookmarks = wdDocument.Bookmarks();
         wdBookmark = cBookmarks.Item(_bookmarkIndex);
         wdBookmark.Select();
     }
     return (wdBookmark ? true : false);
}

// Find bookmark index from name
int bookmarkIndex(str _name)
{
     return confind(wdBookmarksEnum, _name);
}

// Enumerate bookmarks in current document
container bookmarksEnumerate()
{
     container   ret;
     int         i;
     COM         cBookmarks;
     COM         cBookmark;
     ;

     cBookmarks = wdDocument.Bookmarks();
     for (i=1; i<=cBookmarks.Count(); i++)
     {
         cBookmark = cBookmarks.Item(i);
         ret = conins(ret, i, cBookmark.Name());
     }
     return ret;
}

Then you should be able to do something like this:

static void adbTestWordBookmarks(Args _args)
{
     MyMSWord  wd = new MyMSWord();
     CustTable   custTable;
     int         n;
     ;

     //wd.Visible(1); // Make Word visible if desired. By default it's
not

     while select custTable order by name
     {
         wd.documentAdd("C:\\Program Files\\Microsoft 
Office\\Templates\\1033\\Professional Fax.dot")         // Create new 
document
         wd.bookmarkText("Cc", "Tech. dep.");                  //
Bookmark
         wd.bookmarkText("Company", "Acme");                 //
Company
         wd.bookmarkText("Fax", custTable.TeleFax);            // Fax
(number)
         wd.bookmarkText("From", "Hal");
// From
         wd.bookmarkText("Pages", "1");                        //
Pages, could be obtained from 
Document object
         wd.bookmarkText("Subject", "Fax from Axapta");      // Subject
         wd.bookmarkText("To", custTable.Name);                  // To
         wd.documentSave(strfmt("Fax to customer %1.doc", 
custTable.AccountNum)); //or wd.documentPrint(...);
         wd.documentClose();
     }
}

Looking at the vba code generated by the macro recorder in MSWord is
quite 
useful for figuring out how to do a specific task.
The vba code from MSWord can then easily be ported to Axapta.

Hope this helps.

Amund

Wed, 25 Aug 2004 17:02:34 +0200 skrev Harry Nilsen <[EMAIL PROTECTED]>:

> Hi!
>
>
>
> I have to create a Word document based on a Word template with
bookmarks
> from code using data from a table in Axapta.
>
>
>
> Does someone have an example of code which could help me out ?
>
>
>
> Regards,
>
> Harry
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
>
>
> Yahoo! Groups Sponsor
> ADVERTISEMENT
>
> Yahoo! Groups Links
>
> To visit your group on the web, go to:
> http://groups.yahoo.com/group/development-axapta/
>
> To unsubscribe from this group, send an email to:
> [EMAIL PROTECTED]
>
> Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.








Yahoo! Groups Links







Yahoo! Groups Sponsor
ADVERTISEMENT
click here


Yahoo! Groups Links

Reply via email to