Sequence Makerで独自のコマンド送受信ボタンを作る方法（APIを使ってみる）

## はじめに
Sequence MakerはExcelから測定器を制御可能にするアドインです。Sequence Makerは、リボンにある「コマンド送受信」のボタンを押して処理を開始します。しかし、場合によっては自分で設置したVBAのボタンをクリックして処理を開始したい場合があると思います。Sequence Makerには各種APIが用意されているので、VBAからそのAPIを呼び出せばそのような事が可能になります。この記事では実際にボタンを設置してAPI経由でSequence Makerを実行してみます。Sequence Makerについての詳細は以下の記事を参照ください。

https://qiita.com/sequencemaker/items/8e6a370ab0a793a06a3b

:::note warn
***お断り***
本記事の内容はSequence Maker開発元の公式見解ではなく、あくまでも個人が趣味の範囲内で執筆しているものです。記事の内容について開発元へ問い合わせることはお控えください。ご質問・要望などは各記事のコメント欄へお願いいたします。
:::

## Sequence MakerのAPI
Sequence MakerのAPIリファレンスは以下で確認できます。

https://sequencemaker.hioki.com/manual/ja/Sequence%20Maker%20API.html

基本的にはSequence Makerのほぼ全ての設定や動作がAPI経由で呼び出せるようになっています。なのでVBAと組み合わせると処理の自動化などが可能になります。なお、例も豊富に掲載されているので、コピペするだけで使えます。

## 送受信開始のAPI
送受信を開始するためのAPIは以下です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/e0c977be-8e05-f232-edb9-3150bfbef8df.png)

単純に

```
Start()
```

を呼べばOKです。もう少し詳しく書くと、automationObjectというオブジェクトを作っておき、Start()メソッドを呼ぶ感じです。

## 実際にやってみる
まずはワークシート上にボタンを設置します。
開発タブから挿入を選択し、フォームコントロールの一番左上の「ボタン」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/789446c4-5b1c-9c9e-c8a1-9c48db0811b1.png)

:::note
開発タブが表示されていない場合は、リボンの上で右クリックして「リボンのユーザー設定」を選び、開発タブが表示されるように✅を入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/be5f9c74-b0cb-91ba-7452-5ec894cb5081.png)
:::

ワークシート上でドラッグ＆ドロップするとマクロの登録画面が出てきます。
「新規作成」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/54af78b4-24c5-0455-aca4-90871543c130.png)

VBAのエディタが開いたら、先ほどのAPIに載っていた例をそのままコピペします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/53d5d76b-1b24-1085-3731-2bd3fe71f6c7.png)

```vb
Sub ボタン1_Click()

    Dim automationObject As Object
    Set automationObject = Application.COMAddIns("Sequence Maker").Object
    Dim result As Long

    result = automationObject.Start()
    If result <> 0 Then
        Exit Sub
    End If
    
End Sub
```

ボタンのテキストは右クリックして「テキストの編集」で変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/ff4b767c-84fd-8dc1-b8aa-5c7b1baa6ea7.png)

こんな感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/5a95711e-ec20-4787-ce02-b1a638a8b709.png)

これで完成です。あとはいつも通り、送受信したいコマンドのセルを選択し、「オリジナルコマンド送受信」ボタンを押せば、処理が開始されます！！


## 特定のセルから開始させる
もし、処理を開始するセルが毎回決まっていて、固定したい場合は最初に

```
Range("開始するセル").Select
```

のように書いておくと、ボタンを押したときにセルが選択状態になり、そのセルから処理が開始されます。
こんな感じです。

```vb
Sub ボタン1_Click()

    Range("C3").Select    '処理を開始するセルを選択

    Dim automationObject As Object
    Set automationObject = Application.COMAddIns("Sequence Maker").Object
    Dim result As Long

    result = automationObject.Start()
    If result <> 0 Then
        Exit Sub
    End If
    
End Sub
```

これなら、カーソルがワークシート上のどこにあっても、毎回同じ処理から開始されるので便利ですね！
処理ごとにボタンを複数用意しておいて、そのボタンを押すだけで処理が開始するような使い方もできそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/8ddb8bfb-4ee3-bea6-9e66-674d0055f551.png)


### まとめ
今回は独自のコマンド送受信ボタンを作成し、Sequence MakerのAPIを呼ぶことで「コマンド送受信」ボタンを押した時と同等の動作をさせる事ができました。さらにVBAのコードを改造すればいろいろとできそうです。
Sequence MakerのAPIを見ていると、いろいろと夢が膨らんできませんかね！？