Microsoft KB Archive/103273

From BetaArchive Wiki
Knowledge Base


ACC: How to Create Tasks in MS Project for Windows Using DDE

Article ID: 103273

Article Last Modified on 1/18/2007



APPLIES TO

  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition



This article was previously published under Q103273

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

Before data can be sent to Microsoft Project for Windows versions 3.0, 3.0a, 4.0 as well as Microsoft Project for Windows 95, a task must exist in the active project. This article contains sample code to start Microsoft Project, create 10 tasks, and fill the task fields with data.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.x and 2.0. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in Microsoft Access version 2.0

MORE INFORMATION

The following example is intended as a demonstration of the technique required to create a task in Project. The following function is not intended to be replicated exactly.

  1. Create a new module in a Microsoft Access database. Add the following statement to the Declarations section of the module:

          '------------------------------------------------------------------
          'Declarations Section
          '------------------------------------------------------------------
          Option Explicit
                            
  2. Add the following function to the module:

    NOTE: In the following sample code, an underscore (_)is used as a line-continuation character. Remove the underscore from the end of the line when re-creating this code in Access Basic.

        '---------------------------------------------------------------------
        'Start of Function
        '---------------------------------------------------------------------
    
        Function DDE_CreateTasks (ProjectPath as String)
    
          Const DDE_ERROR = 282               ' Define DDE return error.
          Dim Temp, Mynum, Chan1, Chan2       ' Define variables.
    
          On Error GoTo StartUp               ' If Project is not open, start
                                              ' it.
    
          Chan1 = DDEInitiate("winproj", "system")
          ' Initiate a channel to Project.
    
          On Error GoTo QuitNow
    
          Chan2 = DDEInitiate("winproj", DDERequest(Chan1, "ActiveProject"))
          ' Initiate a channel to the active Project.
    
          For Mynum = 1 To 10
             DDEExecute Chan2, "EditGoto .ID=[" & Mynum & "]"
             ' Go to the task.
             DDEExecute Chan2, "SetField .Field=[Name] .Value=MyNewTask" &_
                Mynum & " .Create=[Yes]"
             ' Create a new task.
             DDEPoke Chan2, "T((" & Mynum & "),(Name,Duration))", "Task_
                Number " & Mynum & Chr(9) & Mynum & "d"
             ' Send information to Project.
          Next
    
          DDETerminateAll                     'Terminate the DDE channel.
    
          Exit Function
    
          QuitNow:
    
             DDETerminateAll                  ' Terminate the DDE channel.
             Exit Function
    
          StartUp:
    
             If Err = DDE_ERROR Then
                Temp = Shell(ProjectPath, 6)  ' Start Project.
                Resume                        ' Re-execute DDEInitiate()
                                              ' function.
             End If
    
        End Function
                            
  3. To test this function, type the following line in the Debug window (or Immediate window in versions 1.x and 2.0), and press ENTER

    ?DDE_CreateTasks ("<c:\winproj\winproj.exe>")

    where "<c:\winproj\winproj.exe>" is the path to Project.

Note that Microsoft Project installs two files, Macro.wri and Ddeinfo.wri, in the program folder that contain more information about macro commands and dynamic data exchange (DDE) functionality. These files can be opened in Microsoft Windows Write.

The following Microsoft Access versions work with the following Microsoft Project versions:

    Microsoft Access | Microsoft Project
    ------------------------------------
        1.0, 1.1     |     3.0, 3.0a
           2.0       |  3.0, 3.0a, 4.0
           7.0       |        95
           97        |        95
                

REFERENCES

For more information about DDE, search the Help Index for dynamic-data exchange, or ask the Microsoft Access 97 Office Assistant.


Additional query words: dde

Keywords: kbhowto kbinterop kbprogramming KB103273