この質問は、他の人から何らかの形で何度も尋ねられましたが、ほとんどが未回答のままであるか、与えられた回答は「C#を使用してください!」であり、これは偶然にも回答ではありません。;-)
VBA 経由で zip ファイルを Web サーバーにアップロードしたいと考えています。サーバー側のコードは既に存在し、うまく機能します。手動のフォーム アップロードで zip ファイルを受け取り、zip ファイルの内容を処理します。
理論的には、zip ファイルのバイナリ コンテンツを HTTP 要求文字列に変換し、WinHTTP ライブラリのいくつかのメソッドを使用してサーバーに送信する予定です。すべてがうまくいけば、サーバー サイド スクリプト (Perl) は、ファイルが VBA からのものかブラウザからのものかを判断できず、正常に動作し続けます。
ただし、zip ファイルを HTTP 要求文字列に変換することは、それほど簡単ではないようです。
オンラインで検索すると、3 つの一般的な戦略が存在することが示されているようです。
方法 1: WinHTTP および HTTP 要求文字列へのバイナリの手動エンコード
- ファイルをバイナリ モードで開き、エンコーディング ブードゥーを手動で適用して、バイナリ ストリームを HTTP 要求文字列に変更し、WinHTTP を使用して途中で送信する必要があります。恐ろしい量のコード。
方法 2: WinHTTP
- ADODB.Stream の使用を伴います。10 行未満のコード。
方法 3: SendKeys を介して IE を自動化する
- このハックを説明する単語は 1 つだけです。そしておそらく、IE の将来のバージョンで壊れるでしょう。10 行未満のコード。セキュリティリスク。
私はMethod 2に傾倒していますが、ドキュメントは薄く、コード例はまれであり、それが機能するという確信はありません。ほとんどのコード例は不完全であり、多くの場合、機能しないというコメントが含まれています。この方法は実際に機能しますか?
方法 1は次の行です。
方法 3お願いします。(それに関しては、むしろC#を使用してください。C#が大好きです。要件だけでVBAしか許可されていません)
このタスクを達成する方法の良い例はありますか?