【要改善】ExcelのVBAボタンからWinSCPを起動してLinuxサーバから今日日付がファイル名に付いた指定のログをダウンロードする
Excel上のボタンを押せば誰でも指定のファイルをダウンロードできるようなものをと思い。
ExcelVBAのコード
今日日付のフォルダを作ってその中に指定のファイル名のログをダウンロードするWinSCPを起動する。「vbDirectory」でフォルダの有無をチェックして、すでにフォルダがある場合は作成しない(便利ね~)。
※Shellの中でWinSCPのログのパスを「folder_path」を使ってもっと短くしたかったのだが、うまくShellの中に入れ込められてないのでこれで動くが後で修正する。
Sub 案件1の本日日付フォルダにログをダウンロード() Dim folder_path As String Dim today_date As String today_date = Format(Date, "yyyymmdd") folder_path = "C:\work\temp" folder_path = folder_path & "\" & today_date & "_案件1" If Dir(folder_path, vbDirectory) = "" Then MkDir folder_path End If Shell "C:\Program Files (x86)\WinSCP\WinSCP.exe /console /log=""C:\work\temp" & "\" & today_date & "_案件1\" & today_date & "_scp.log"" /script=C:\work\winscp_dl.txt", 1 End Sub
winscpのスクリプト
winscp_dl.txt(パスワード認証の場合)
option batch off option confirm on open user:password0@サーバ名 option transfer binary cd /hoge/logdir get hoge_%TIMESTAMP#yyyymmdd%.log C:\work\temp\%TIMESTAMP#yyyymmdd%_案件1 close exit
winscp_dl.txt(鍵認証の場合)
option batch off option confirm on open scp://ユーザー名@サーバ名 -privatekey=”C:\path\to\hoge.ppk” option transfer binary cd /hoge/logdir get hoge_%TIMESTAMP#yyyymmdd%.log C:\work\temp\%TIMESTAMP#yyyymmdd%_案件1 close
準備ができたら
Excel上にボタンを作成して
ボタンにExcelVBAマクロを登録すればボタンで使えます。
以上