0
0

More than 1 year has passed since last update.

vbaでWinSCP経由でs3.amazonaws.comにアクセスしアップロード等するには

Last updated at Posted at 2022-04-08

諸々割愛

1、vba のshellでバッチファイルを実行する。

2、そのバッチファイルは
s3.amazonaws.comのシークレットキーをパイプで前に置いておき
winscp.comを起動してWinSCPでのコマンドが入ったテキストファイルを読みに行く動作。

3、WinSCPでのコマンド群はtxtファイルで用意しておく。
アクセスキーとs3.amazonaws.comを開くコマンドなどを入れておく。

で操作が可能でした。

WinSCPは全ユーザ用としてProgram Files (x86)\WinSCPに
インストール済みとしてソースを見ながら再度説明していきます

control_winscp.vb
sub control_winscp()
    Shell ("C:\Program Files (x86)\WinSCP\execute_upload.bat")
end sub

これで execute_uoload.bat というバッチを実行。多分場所はどこでも大丈夫なはず

execute_upload.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 を入力。的な状況の時は
このようにするようです。

winscp_upload_commands.txt
open s3://{アクセスキー}@s3.amazonaws.com:{ポート}/{バケット名}
cd {上げたいディレクトリ}
put "\\{上げたいファイルのパス}\file1.htm"
put "\\{上げたいファイルのパス}\file2.png"
put "\\{上げたいファイルのパス}\{フォルダ名}"

ここからはWinSCPコマンドライン上のコマンド群ですね
openでアクセスして
cd で階層を移動
putでファイルやフォルダのアップロード

です。
バッチファイルに記述すると文字化けしてしまい通りませんでした。
base64とかじゃないとダメなのかもしれません。

これでvba上で操作が可能になりますが自動実行などaws側が認めていない可能性もあるので
利用の際はご注意を。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0