How to Use OLE Automation with Microsoft Project 4.1

ID: Q143297

3.00 3.00b WINDOWS kbole kbinterop kbhowto

The information in this article applies to:

  • Microsoft Visual FoxPro for Windows, versions 3.0 and 3.0b

SUMMARY

This article shows by example how to create a new project in Microsoft Project 4.1 by using Visual FoxPro and OLE Automation.

MORE INFORMATION

The following code sets up a Microsoft Project called Saltbox. This project consists of tasks necessary to build a house.

Step-by-Step Example

1. Create a table in Visual FoxPro called k2project that has the following

   structure. This structure follows the task structure of Microsoft
   Project.

   Field#  Name       Type
   1. field1     - Character(10)
   2. task_name  - Character(25)
   3. duration   - Character(5)
   4. start      - date
   5. finish     - date
   6. pred       - Character(10)
   7. resource_n - Character(20)

2. Populate the table with data. Each record consists of a task to build a
   house. for example:

   field1    = " "
   task_name = "Build House"
   duration  = "60d"
   start     = 03/01/96
   finish    = " "
   pred      = " "
   resource_n = "Ace Builders"

   NOTE: Assign a start date to the first task only. Assign all tasks a
   duration. For example, 30d = thirty days. Microsoft Project will
   calculate the finish dates based upon the duration of each task.

3. Enter the following code in a program file, and then run it to create a
   project, link the tasks, and calculate the length of the project. This
   program will print a Gantt Chart and Pert Chart.

   CLEAR
   SET SAFETY OFF
   ON ERROR DO OLERROR
   SET DEFAULT TO "C:\VFP Files"
   PUBLIC x

   IF FILE('Saltbox.mpp')
     ERASE Saltbox.mpp
     ERASE Saltbox.mpx
   ENDIF

   IF USED('k2project')
     USE IN k2Project
   ENDIF

   USE k2project IN 0
   * Microsoft Project will only accept FOX2 TYPE FILES
   COPY TO xproj TYPE FOX2
   USE IN k2project
   Myfile = "xproj.dbf"

   x=CreateObject("MSProject.Project.4_1")
   x.application.Visible=.t.
   x.application.FileNew
   x.application.FileSaveAs("SaltBox")
   * Append Entry table from Myfile
   x.application.FileOpen(Myfile,0,1,1,'Entry')
   x.application.SelectAll
   * Link the tasks together
   x.application.LinkTasks
   x.application.AppMinimize

   Myans =MessageBox("Print Gantt Chart?",4+32,"Print Report")
   IF Myans = 6
     x.application.FilePrint(1,4)
   ENDIF

   x.application.AppRestore
   x.application.ViewApply("Pert Chart")
   x.application.AppMinimize

   Myans =MessageBox("Print Pert Chart?",4+32,"Print Report")
   IF Myans = 6
     x.application.FilePrint(1,2)
   ENDIF

   x.application.ViewApply("Gantt Chart")
   x.application.FileSave
   x.application.FileQuit

   RELEASE x
   RETURN

   PROCEDURE OLERROR
   ON ERROR
   WAIT WINDOW "An error occurred!"
   =AERROR(myerror)
   CLEAR
   ? 'The error provided the following information'  && Display message
   FOR n = 1 TO 7  && Display all elements of the array
    ? myerror(n)
   ENDFOR

   IF TYPE("X") = "O"
     x.application.Quit
     RELEASE X
     CANCEL
   ENDIF
   RETURN

Additional reference words: 3.00 3.00b VFoxWin KBCategory: kbole kbinterop kbhowto KBSubcategory: FxinteropOle
Keywords          : kbcode FxinteropOle 
Version           : 3.00 3.00b
Platform          : WINDOWS


Last Reviewed: May 22, 1998
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.