【要改善】ExcelのVBAボタンからWinSCPを起動してLinuxサーバから今日日付がファイル名に付いた指定のログをダウンロードする

【PR】
※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。

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マクロを登録すればボタンで使えます。

以上