RSS ITサイト動画新着

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

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

以上

【PR】最近楽天で購入した商品

お手頃な値段で楽しめるが、なかなか真っすぐ飛ばせるようにならない。。。【レビュー投稿で1年保証】 X-COM スポーツディスク アルティメット フライング スタンダード ディスク 競技用 正規品 17 [...]

ipv6(クロスパス対応)だと接続するだけで使えるのは超絶便利。うちの場合は工事をしている間にipv6で繋がるようになりました。NEC PA-WX1500HP 無線LANルータ Aterm ブラック価 [...]

子供が児童館に置いてあったおもちゃでみて気に入って、欲しいとのことで購入。大人もぼーと見てられて、なかなか良い。【期間限定ポイントUP】日本製 【 オフィス弥生 】 プレイタイマー 1個 【 水車 タ [...]

Windows Batch Recipe

Posted by admin