
✅ はじめに
VBAからAmazon S3にファイルを自動アップロードしたい——
しかし、直接HTTP通信やAWS SDKを使うのはハードルが高いと感じる方も多いはず。
そこで今回は、WinSCPを経由することで、シンプルかつ安全にVBAからS3へファイルアップロードを行う方法を解説します。
■ 仕組みの全体像
操作は以下の3段階に分かれます:
- VBAでバッチファイル(.bat)を呼び出す
- そのバッチファイルがWinSCPを起動し、コマンドファイル(.txt)を実行
- WinSCPのコマンドファイルで、Amazon S3への接続&アップロードを実行
※別に、VBA使用しなくても直実行でもOK
■ 実装ステップ
1. VBAでバッチファイルを実行
Sub control_winscp()
Shell ("C:\Program Files (x86)\WinSCP\execute_upload.bat")
End Sub
2. バッチファイル(execute_upload.bat)の内容
@echo off
cls
echo {シークレットキー} | "C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script="C:\Program Files (x86)\WinSCP\winscp_upload_commands.txt"
✔ ポイント
|
を使って標準入力としてシークレットキーを渡しているのが肝WinSCP.com
に/script=
パラメータでコマンドファイルを渡す構成
3. WinSCPコマンドファイル(winscp_upload_commands.txt)
open s3://{アクセスキー}@s3.amazonaws.com:{ポート}/{バケット名}
cd {アップロード先のディレクトリ}
put "\\パス\to\upload\file1.htm"
put "\\パス\to\upload\file2.png"
put "\\パス\to\upload\フォルダ名"
■ 解説
- open: S3バケットへ接続(アクセスキーと連携)
- cd: ディレクトリ移動
- put: ファイルやフォルダをアップロード
⚠ 注意点・トラブルシューティング
- バッチファイルで文字化けが発生する可能性あり
→ 保存時にUTF-8でなくANSIで保存してみる、またはファイル名やパスを英数字に統一。 - 自動実行がAWSのポリシーに抵触する可能性あり
→ セキュリティポリシーを確認し、IAM権限の最小化やMFA連携も検討を。 - base64などでキーを事前に暗号化しておくのも一案
■ まとめ
この方法を使えば、VBAからS3へファイルアップロードを自動化することが可能になります。
WinSCPを介すことでAWS SDKの複雑さを回避できるので、非開発者でも扱いやすいのが大きな利点です。
■ 関連キーワード
- VBA S3 アップロード
- WinSCP S3 接続
- WinSCP スクリプト 自動実行
- VBA AWS バッチ連携
- S3 自動化 ファイル転送
- WinSCP シークレットキー パイプ