諸々割愛
1、vba のshellでバッチファイルを実行する。
2、そのバッチファイルは
s3.amazonaws.comのシークレットキーをパイプで前に置いておき
winscp.comを起動してWinSCPでのコマンドが入ったテキストファイルを読みに行く動作。
3、WinSCPでのコマンド群はtxtファイルで用意しておく。
アクセスキーとs3.amazonaws.comを開くコマンドなどを入れておく。
で操作が可能でした。
WinSCPは全ユーザ用としてProgram Files (x86)\WinSCPに
インストール済みとしてソースを見ながら再度説明していきます
sub control_winscp()
Shell ("C:\Program Files (x86)\WinSCP\execute_upload.bat")
end sub
これで execute_uoload.bat というバッチを実行。多分場所はどこでも大丈夫なはず
@REM
@echo off
cls
echo {シークレットキー}|"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script="C:\Program Files (x86)\WinSCP\winscp_upload_commands.txt"
英語の解釈の様に後ろから読解すると
winscpで実行したいコマンド群のテキストを収めた winscp_upload_commands.txt を
/script= として実行したい
WinSCP.comで
アクセス後はシークレットキーを入力して。
といった感じでしょうか。
シークレットキーをパイプで繋いで前に置いておくのがトリッキーでした。
コマンドプロンプトのお作法で 実行しますか? Y を入力。的な状況の時は
このようにするようです。
open s3://{アクセスキー}@s3.amazonaws.com:{ポート}/{バケット名}
cd {上げたいディレクトリ}
put "\\{上げたいファイルのパス}\file1.htm"
put "\\{上げたいファイルのパス}\file2.png"
put "\\{上げたいファイルのパス}\{フォルダ名}"
ここからはWinSCPコマンドライン上のコマンド群ですね
openでアクセスして
cd で階層を移動
putでファイルやフォルダのアップロード
です。
バッチファイルに記述すると文字化けしてしまい通りませんでした。
base64とかじゃないとダメなのかもしれません。
これでvba上で操作が可能になりますが自動実行などaws側が認めていない可能性もあるので
利用の際はご注意を。