VBA(ファイル転送)

 

https://www.j-oosk.com/teraterm/file-transfer/224/
https://www.j-oosk.com/teraterm/file-transfer/221/


Windows Script Host Object Model」を参照設定で追加して再起動

''''''''''''''''''''''''''''''''''''''''''''''

Sub ファイル送信()

Dim wsh As Object
Dim res As WshExec

'画面を更新しない
Application.ScreenUpdating = False
'確認メッセージを表示しない
Application.DisplayAlerts = False

Open ActiveWorkbook.path & "\test123.ttl" For Output As #1

    Print #1, ";=========================================================== "
    Print #1, "HOSTADDR = '192.168.137.55' "
    Print #1, "USERNAME = 'testuser' "
    Print #1, "PASSWORD = 'password' "
    Print #1, "DESTFILE = '/tmp/test123.txt' "
    Print #1, "SOURFILE = 'H:\tmp\test123.txt' "
    Print #1, ";=========================================================== "
    Print #1, ";; ①コマンド組立て "
    Print #1, "COMMAND = HOSTADDR "
    Print #1, "strconcat COMMAND ':22 /ssh /2 /auth=password /user=' "
    Print #1, "strconcat COMMAND USERNAME "
    Print #1, "strconcat COMMAND ' /passwd=' "
    Print #1, "strconcat COMMAND PASSWORD "
    Print #1, " "
    Print #1, ";; ②接続 "
    Print #1, "connect COMMAND "
    Print #1, " "
    Print #1, ";; ③接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) "
    Print #1, "if result <> 2 then "
    Print #1, "    messagebox 'It could not be connected.' 'Connection Error' "
    Print #1, "    end "
    Print #1, "endif "
    Print #1, " "
    Print #1, ";; ④接続判定2(10秒以内にプロンプトが表示されない場合TeraTerm終了) "
    Print #1, "timeout = 10 "
    Print #1, "wait '$' '#' "
    Print #1, "if result = 0 then "
    Print #1, "    disconnect 0 "
    Print #1, "    end "
    Print #1, "endif "
    Print #1, " "
    Print #1, ";; ⑤ファイル送信 "
    Print #1, "scpsend SOURFILE DESTFILE "
    Print #1, "mpause 1000 "
    Print #1, "sendln 'exit' "
    Print #1, " "
    Print #1, ";; ⑥マクロ終了 "
    Print #1, "end "

Close #1


'コマンド実行
Set wsh = CreateObject("WScript.Shell")
Set res = wsh.Exec("C:\Program Files\teraterm\ttpmacro.exe " & ActiveWorkbook.path & "\test123.ttl")

Do While res.Status = 0
    DoEvents
Loop


Set res = Nothing
Set wsh = Nothing

'確認メッセージを表示する
Application.DisplayAlerts = True
'画面を更新する
Application.ScreenUpdating = True

MsgBox ("処理完了")

End Sub


''''''''''''''''''''''''''''''''''''''''''''''

Sub ファイル受信()

Dim wsh As Object
Dim res As WshExec

'画面を更新しない
Application.ScreenUpdating = False
'確認メッセージを表示しない
Application.DisplayAlerts = False

Open ActiveWorkbook.path & "\test456.ttl" For Output As #1


    Print #1, ";================================================ "
    Print #1, "HOSTADDR = '192.168.137.55' "
    Print #1, "USERNAME = 'testuser' "
    Print #1, "PASSWORD = 'password' "
    Print #1, "DESTFILE = 'H:\tmp\test456.txt' "
    Print #1, "SOURFILE = '/tmp/test456.txt' "
    Print #1, ";================================================ "
    Print #1, ";; ①コマンド組立て "
    Print #1, "COMMAND = HOSTADDR "
    Print #1, "strconcat COMMAND ':22 /ssh /2 /auth=password /user=' "
    Print #1, "strconcat COMMAND USERNAME "
    Print #1, "strconcat COMMAND ' /passwd=' "
    Print #1, "strconcat COMMAND PASSWORD "
    Print #1, " "
    Print #1, ";; ②接続 "
    Print #1, "connect COMMAND "
    Print #1, " "
    Print #1, ";; 接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) "
    Print #1, "if result <> 2 then "
    Print #1, "    messagebox 'It could not be connected.' 'Connection Error' "
    Print #1, "    end 
    Print #1, "endif "
    Print #1, " "
    Print #1, ";; ③接続判定2(10秒以内にプロンプトが表示されない場合TeraTerm終了) "
    Print #1, "timeout = 10 "
    Print #1, "wait '$' '#' "
    Print #1, "if result=0 then "
    Print #1, "    disconnect 0 "
    Print #1, "    end "
    Print #1, "endif "
    Print #1, " "
    Print #1, ";; ④ファイル受信 "
    Print #1, "scprecv SOURFILE DESTFILE "
    Print #1, "mpause 1000 "
    Print #1, "sendln 'exit' "
    Print #1, " "
    Print #1, ";; ⑤マクロ終了 "
    Print #1, "end "


Close #1


'コマンド実行
Set wsh = CreateObject("WScript.Shell")
Set res = wsh.Exec("C:\Program Files\teraterm\ttpmacro.exe " & ActiveWorkbook.path & "\test456.ttl")

Do While res.Status = 0
    DoEvents
Loop


Set res = Nothing
Set wsh = Nothing

'確認メッセージを表示する
Application.DisplayAlerts = True
'画面を更新する
Application.ScreenUpdating = True

MsgBox ("処理完了")


End Sub

''''''''''''''''''''''''''''''''''''''''''''''