質問: Excel2007を利用しています。 ExcelのVBAで、WinSCPのSFTPで接続しているパスを取得したいと思っています。 セッションの設定 ⇒転送プロトコル SFTP ホスト名(あり) ポート番号(あり) ユーザー名(あり) パスワード(あり) コマンドでFTP接続?等色々試しましたが、上手く接続出来ませんでした。 Excelで利用するのは、ファイルのパスをExcelに記載する必要があるためです。 フルパスを記載する必要があるのですが、その人が利用したいものを作成するために 毎回参照先が変わります(フォルダ作成をしたり、画像まで参照したりもします) その人が利用する全てのパスをExcelに記載したいのです。 ただ、他の人はWinSCPを利用していません。 UWSCのプログラムで無理やり同じ状況になるように設定するか パスを取得するか等 他の手段が欲しいと思っています。 Excelには、以下のようなデータが入っています。 番号,内容,説明文,テキストリンク,HTMLリンク,画像リンク,動画リンク,図表リンク 1,AがB,AがBな件について,サーバーのXXX.txt,サーバーのXXX.html,サーバーのXXX.jpeg,サーバーのXXXX.mp4,サーバーのXXX.jpg 上記、サーバーのXXX.txt等のファイルは自分のExcelファイルが置いてあるフォルダに置いてあります。 (または、フォルダ名でまとめています) それをそのまま指定したサーバーに載せてサーバーのアドレスを取得したいです。 やっぱり、WinSCPでないと出来ないでしょうか? Windowsのコマンド(バッチファイル)またはUWSCで サーバーとファイル転送ができたら一番良いのですが...。 ソフトをインストールしないで何か方法ありませんか? よろしくお願いいたします。
回答: SFTPで通信する機能を全てExcelVBAで実装するという話ならば、実装の手間を度外視すれば可能だとは思いますが・・・ ある程度の制約を享受するなら、代替案はいくつかあります。 ・Delegate(プロトコル変換ツール)のサーバを仕立てて、SFTP→FTP変換してしまう。 ・rsyncでSFTPサーバーとファイルサーバー内のファイルを同期してしまう。 ただ、そもそもSFTPを採用したのはセキュリティ上の配慮からと言う可能性もあります。無闇に迂回方法を用意するのは、セキュリティ上の配慮を台無しにするので問題です。まずはSFTPサーバーを仕立てた担当者と、インストール展開や教育にかかる手間を伝えた上で、代替処置をとれないか相談しては如何でしょう?