Excel(VBA)やVbScriptでSSH接続をするライブラリVbaSSHLibrary(COMコンポーネント)

Excel(VBA)や、vbsなどからSSH接続をオブジェクトとして作成できるオープンソースのVbaSSHLibraryを使うと以下のようなことができます。

DimやCreateObjectで VbaSSHインスタンスを作成し、
Openで接続、Executeでコマンド実行というシンプルさ

自分のPCで使えるようにするには、

VbaSSHLibrary_102.zip

をダウンロードしてきて ZIPファイルを任意の場所に展開、
私のところの環境では \00_tools\vbassh へ展開しました。

コマンドプロンプトを管理者モードで起動

展開したフォルダ内に移動します。

cd \\00_tools\vbassh

VbaSSHLibraryはActiveX型式のライブラリなのでシステム登録する必要があります。
RegAsm.exeコマンドにてシステムに登録します。

“C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe” VbaSSHLibrary.dll /tlb:VbaSSHLibrary.tlb /codebase

.netフレームワークがインストールされていないなどの理由でエラーが発生したら以下のURLから.netフレームワークをインストールしてください。

Windows 用の Microsoft .NET Framework 4.7.2 オフライン インストーラー
https://support.microsoft.com/ja-jp/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows

RegAsm : error RA0000 : 入力アセンブリ ‘VbaSSHLibrary.dll’ またはその依存関係の 1 つが見つかりません。と表示されてしまうときは

おそらく途中の手順を飛ばしています。
別PCにセットアップしようとして、横着して手順をすっ飛ばしていました。

VbaSSHLibrary.dll があるフォルダに移動して再試行してみてください。

サンプルプログラム

Excel(VBA)のコードウィンドウを開いて、ツール – 参照で参照設定を開きます。
参照ボタンを押下し、先程インストールしたディレクトリ内にある VbaSSHLibrary.tlbを選択、参照可能なライブラリ ファイルから VbaSSHLibraryにチェックが付いていることを確認します。

以下のようなコードでExcel(VBA)からSSH接続できます。

ダウンロードはこちらから

“VBA_Sample.txt” をダウンロード VBA_Sample.txt – 1872 回のダウンロード – 779.00 B
Public Sub 使用方法()
    Dim SSH As New VbaSSHLibrary.VbaSSH

    With SSH
        .Open "サーバー1のIPアドレス", "ポート番号", "id", "pw"
        Debug.Print .Execute("cd /;ls -la")
        .Close
    End With
End Sub

Public Sub サンプル()
    
    Dim Ssh1 As New VbaSSHLibrary.VbaSSH
    Dim Ssh2 As New VbaSSHLibrary.VbaSSH
    Dim Ssh3 As New VbaSSHLibrary.VbaSSH

    Ssh1.Open "192.168.0.100", 22, "user1", "123456"
    Ssh2.Open "192.168.0.101", 22, "user2", "password"
    Ssh3.Open "192.168.0.102", 2222, "user3", "qwerty"

    Debug.Print Ssh1.Execute("cd /;ls -la")
    Debug.Print Ssh2.Execute("tar cvf hoge.tar *.php")
    Debug.Print Ssh3.Execute("adb shell input touchscreen tap 123 456")

    Ssh1.Close
    Ssh2.Close
    Ssh3.Close

End Sub

Executeで任意のコマンドが動かないときは

手動でssh接続しコマンドを実行すると正常に動くのに、VbaSSHLibrary経由でコマンドを実行すると正しく動かないときはリモートサーバーの設定が残念なことになっている可能性があります。

こちらを読むことで解決できる可能性があります。

コメント

タイトルとURLをコピーしました