Différences entre VBScript et OLE Automation

Les programmes VBScript et les programmes OLE Automation sont très similaires. Vous pouvez aisément créer des programmes VB ou VBA, si vous savez utiliser VBScript. Cependant il existe quelques différences. L'exemple de programme suivant révèle ce qui différencie OLE Automation de VBScript.

Programme VBScript

Le programme VBScript suivant vous permet de dénombrer les classes définies dans un MOO et d'afficher leur nombre dans la fenêtre Résultats de PowerAMC, puis de créer un autre MOO et d'afficher son nom dans cette même fenêtre.

Pour cela, les étapes suivantes sont nécessaires :

  • Récupérer le modèle actif courant à l'aide de la fonction globale ActiveModel.

  • Vérifier l'existence d'un MOO actif.

  • Dénombrer les classes dans le MOO actif et afficher un message dans la fenêtre Résultats.

  • Créer un nouveau MOO et afficher son nom dans la fenêtre Résultats.

'* Purpose:  This script displays the number of classes defined in an OOM in the output window.
Option Explicit
' Main function
' Get the current active model
Dim model
Set model = ActiveModel
If model Is Nothing Then
   MsgBox "There is no current model."
ElsIf Not Model.IsKindOf(PdOOM.cls_Model) Then
   MsgBox "The current model is not an OOM model."
Else
   ' Display the number of classes
   Dim nbClass
   nbClass = model.Classes.Count
   Output "The model '" + model.Name + "' contains " + CStr(nbClass) + " classes."
' Create a new OOM
   Dim model2
   set model2 = CreateModel(PdOOM.cls_Model)
   If Not model2 Is Nothing Then
      ' Copy the author name
      model2.author = model.author
      ' Display a message in the output window
      Output "Successfully created the model '" + model2.Name + "'."
   Else
      MsgBox "Cannot create an OOM."
   End If
End If

Programme OLE Automation

Pour faire de même avec un programme OLE Automation, vous devez le modifier de la manière suivante :

  • Ajouter la définition de l'application PowerAMC.

  • Invoquer la fonction CreateObject pour créer une instance de l'objet PowerAMC Application.

  • Préfixer toutes les fonctions globales (ActiveModel, Output, CreateModel) par l'objet PowerAMC Application.

  • Libérer l'objet PowerAMC Application.

  • Spécifier des types pour les variables "model" et "model2".

'* Purpose:  This script displays the number of classes defined in an OOM in the output window.
Option Explicit
' Main function
Sub VBTest()
   ' Defined the PowerDesigner Application object
   Dim PD As PdCommon.Application
   ' Get the PowerDesigner Application object
   Set PD = CreateObject("PowerDesigner.Application")
' Get the current active model
   Dim model As PdCommon.BaseModel
   Set model = PD.ActiveModel
   If model Is Nothing Then
      MsgBox "There is no current model."
   ElsIf Not model.IsKindOf(PdOOM.cls_Model) Then
      MsgBox "The current model is not an OOM model."
   Else
      ' Display the number of classes
      Dim nbClass
      nbClass = Model.Classes.Count
      PD.Output "The model '" + model.Name + "' contains " + CStr(nbClass) + " classes."
' Create a new OOM
      Dim model2 As PdOOM.Class
      Set model2 = PD.CreateModel(PdOOM.cls_Model)
      If Not model2 Is Nothing Then
         ' Copy the author name
         model2.Author = Model.Author
         ' Display a message in the output window
         PD.Output "Successfully created the model '" + model2.Name + "'."
      Else
         MsgBox "Cannot create an OOM."
      End If
   End If
' Release the PowerDesigner Application object
   Set PD = Nothing
End Sub