更新日:14/04/11

Excel の VBA から SigmaScan Pro 5 を操作したい

Q. Excel の VBA から SigmaScan Pro 5 を操作したいのですが

A. SigmaScan Pro 5 を、外部アプリケーションから操作する例として、SigmaScan Pro 5 インストールフォルダの中の Macros にある各フォルダにサンプルがあります。また、外部スクリプトからの操作時に必要な定数ファイルについては、Help の Chapter 8 の Using Programming Constants に説明があります。

下記は、Excel VBA から SigmaScan Pro を操作するマクロを作成する手順の例です。

  1. Excel の Visual Basic Editor を開き、ツールメニュー → 参照設定... の参照ボタンで、次のファイルを選択します。
    <SigmaScan Pro 5 インストールフォルダ>\scan.tlb

  2. Visual Basic Editor で、編集中の Excel ファイルのプロジェクトツリーの標準モジュールの項に、次のファイルをインポートします。
    <SigmaScan Pro 5 インストールフォルダ>\Macros\Constant.bas

  3. 新しいモジュールを開き、下記コードを入力します。この例は、SigmaScan Pro 5 と共にインストールされるデモ画像を読み込み、特定の色域の領域の面積を測定して、アクティブな Excel ワークシートに結果を転載するものです。
    Sub ObtainDataFromSigmaScan()
    ' SigmaScan の起動
    Dim SScan As Object
    Set SScan = CreateObject("SigmaScan.Application")
    SScan.Show
    
    ' 新規 SigmaScan ワークシートを開く
    Dim Worksheet As Object
    Set Worksheet = SScan.NewWorksheet
    Worksheet.Show
    Worksheet.MakePermanent
    
    ' すべての Measurements 設定をオフに
    Dim i As Integer
    For i = 0 To NUMMEASURES - 1
    SScan.DoNotCollectMeasurement i
    Next i
    
    ' 面積(Area)計測を A 列に設定
    SScan.CollectMeasurement M_AREA, "A"
    
    ' 画像の読み込み
    Dim Shape1 As Object
    Set Shape1 = SScan.OpenImage(SScan.GetExeFileDirectory() + "images\Shape.bmp")
    Shape1.MakePermanent
    
    ' Overlay 1 で検出するの色範囲の設定
    Dim Left0(1) As Long
    Left0(0) = 0
    Dim Right1(1) As Long
    Right1(0) = 60
    Dim ResultCode As Integer
    ResultCode = Shape1.IntensityThreshold(1, 1, Left0, Right1)
    
    ' 計測実行
    ResultCode = Shape1.MeasureObjects(1)
    
    ' 計測結果を Excel のアクティブシートに転載
    Dim ExSheet As Object
    Set ExSheet = Application.ActiveSheet
    For i = 1 To Shape1.CountObjects(1)
    ExSheet.Cells(i, 1) = Worksheet.GetCellText("A", i)
    Next i
    
    End Sub
コード中の関数の意味などについては、SigmaScan Pro の Help をご参照ください。
11 行目および 25 行目(xxx.MakePermanent の行)を両方コメント アウトしておくと、スクリプト終了後に SigmaScan Pro のウィンドウ が閉じられるようになります。
このコードはお客様のご参考のために掲載しているもので、ヒューリンクスは、本スクリプト実行によるいかなる問題に対しても責任を負いません。またサポートもいたしません。