質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

980閲覧

EXCELのVBAでPHPまでGET送信でファイルを送りたい

mememd

総合スコア50

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/09/27 09:40

編集2022/01/12 10:55

EXCELのVBAでPHPまでGET通信でファイルを送りたいのですが方法が分かりませんでした。
どのようなことが実装したいかというと、EXCEL上からファイルパス(絶対パス)を取得して、そのパスから画像データなどのデータを直接、パラメータに格納したいと考えております。
エラーが発生しますがコード記載します。
もしかしたら、根本的な何かが間違っているかもしれないので、間違いがあればご指摘のほどよろしくお願いします。

'webApiにアクセスする用に設定 Public Function serverAccess1() Dim http As Object Dim targetURL As String Dim inputFileName As String Dim inputFn As Long Dim buffer() As Byte '読み込むファイル inputFileName = "読み込むファイルのフルパス" '空いているファイル番号 inputFn = FreeFile 'バイナリファイル読み込み Open inputFileName For Binary As #inputFn 'ファイルの長さで配列を初期化 ReDim buffer(LOF(inputFn)) 'ファイルをバイナリで読み込んでByte配列に格納 Get #inputFn, , buffer Close #inputFn targetURI = "http://test.php?file=" + buffer Set http = CreateObject("MSXML2.XMLHTTP") Call http.Open("GET", targetURI, False) Call http.setRequestHeader("Content-Type", "multipart/form-data") Call http.Send End Function

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alg

2017/09/27 09:51 編集

`targetURI = "http://test.php(以下略)` ここのダブルクォートが正しく閉じていないようですが、転記ミスでしょうか?
mememd

2017/09/27 09:58

転機ミスです
hotta

2017/09/27 23:40

発生したエラー内容も【質問欄に】追記願います。
mememd

2017/09/28 06:48

上記のエラーではtargetURI(String)に buffer(Byte)を無理やり入れようとしてコンパイルエラーが発生しています。
guest

回答1

0

ExcelのVBAが、という以前の問題で

PHPまでGET送信でファイルを送りたい

というのが難しいのではないかと思います(基本的には無理かと思います)。

というのも、GET送信の場合、GETパラメータとして送れるのは文字列だけなのです。

「ファイル」の中身が文字列であれば、それをVBA側で読み取ってGETパラメータにつけて送信できるのですが、画像は文字列ではありません(バイナリデータといいます)。

※一応、画像を文字列化する方法はあるものの(画像のバイナリデータを「データURIスキーム」というものに変換します)、そのやりかたを模索するくらいなら、GET送信ではなくPOST送信に切り替えたほうが素直ではないかと思います。

VBAでPOST送信でファイルをアップロードする方法を解説しているサイトがありましたので、ご紹介しておきます。

https://doruby.jp/users/ookouchi/entries/201708-EXCEL-VBA-API-FileUpload-multipart_form_data

投稿2017/09/29 05:51

nak

総合スコア696

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問