DIAdemヘルプ

DIAdemをActiveXオブジェクトとして制御

  • 更新日2023-04-06
  • 11分で読める

このサンプルでは、DIAdemをActiveXオブジェクトとして使用する方法と、DIAdemを別のアプリケーションからリモート制御する方法を示します。

サンプルデータセットをロードする

レイアウトを選択:

選択したレイアウトを開く

メモ 使用している安全設定に応じて、オペレーティングシステムはActiveX要素が安全でない可能性があることを警告します。サンプルを実行するには、コントロールを登録する必要があります。この警告は、HTMLページに自動化オブジェクトを埋め込むのにCreateObjectコマンドを使う場合に表示されます。
メモ このサンプルを開始するとサンプルファイルが読み込まれ、既存のデータとレイアウトは上書きされます。
メモ 以下のスクリプトは、このヘルプページのHTMLコードに埋め込まれています。スクリプトはDIAdemをActiveXオブジェクトとして登録し、DIAdemのコマンドインターフェースを使用してコマンドを送信します。他のすべての埋め込まれたスクリプトは、HTMLフォームを評価するためのものです。
Dim oMyDIAdem, ProgramDrv
Set oMyDIAdem = new DIAdemAutomation

Call oMyDIAdem.LoadDiademDataSet(ProgramDrv & "examples\data\report_expl.tdm", True)
Call oMyDIAdem.LoadDiademLayout(ProgramDrv & "examples\documents\Expl_Report_2DAxis.TDR")
Set oMyDIAdem = Nothing

Class DIAdemAutomation
Dim oDIAdem, DIAdemApp
  Private Sub Class_Initialize()
    Set oDIAdem = Nothing
    Call ConnectToDIAdem
    Call oDIAdem.VariantVarget("Application",DIAdemApp)
    Call oDIAdem.VariantVarget("ProgramDrv",ProgramDrv)
  End Sub

  '================================================================
  Private Sub Class_Terminate()
    Set oDIAdem = Nothing
  End Sub

  
  '================================================================ 
  Function DIAdem_Exec(DIAdemCommand)
      DIAdem_exec = False
      If ConnectToDIAdem Then
          If oDIAdem.CmdExecuteSync(DIAdemCommand) = 1 Then DIAdem_exec = True
      End If
  End Function
  '================================================================
  Sub LoadDiademLayout(LayOut)
     Call DIAdemApp.Report.LoadLayout(LayOut)
     Call DIAdem_exec("WndOpen(""Report"")")
     Call DIAdemApp.Report.Refresh
  End Sub

  '================================================================
  Sub ExportPDF(PDFName)
    Call DIAdemApp.Report.Sheets.ExportToPDF(PDFName)
  End Sub
  
  '================================================================
  Function LoadDiademDataSet(DataSet, clear)
    If clear Then
      Call DIAdemApp.Data.Root.Clear
    End if
    Dim MyCommand : MyCommand = "DataFileLoad(""" & DataSet & """)"
    LoadDiademDataSet = DIAdem_exec(MyCommand)
  End Function
  
  '================================================================
  Private Function ConnectToDIAdem
    Dim nValueT, iWait
    If NOT oDIAdem Is Nothing Then
      ConnectToDIAdem = True
      Exit Function
    End If  
    ConnectToDIAdem = False
      On Error Resume Next
      Set oDIAdem = CreateObject("DIAdem.TOCommand")
      If Err.Number > 0 then
        Set oDIAdem = Nothing
        Err.Clear
      Else
        iWait = 0 
        Do 
          iWait = iWait + 1
          If iWait >=1000 Then
            Exit Function
          End If
        Loop Until Not oDIAdem.bInterfaceLocked    
        ' Suppress all messages
        oDIAdem.bNoMsgDisplay = true
        oDIAdem.bNoInfoDisplay = true
        oDIAdem.bNoErrorDisplay = true
        oDIAdem.bNoWarningDisplay = true
        oDIAdem.bNoNoDialogDisplay = true
        ConnectToDIAdem = True
      End If
  End Function

End Class