Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Access 2021)
AccecssVBAからWebからデータを取得の処理
投稿日時: 25/06/15 13:43:50
投稿者: zenchan2

web上URLでパラメタを指定するとWebから返事(回答)が得られる。
そこで下記内容で、指定するとDOWNLoadフォルダーにFileが格納されます。
またデータも正常に返答されます。
しかし Web(Edege)?の画面が出たままになり、都合上使い勝手が悪いのです。
毎回画面を手で閉じなければなりません。
 
どうしたらweb画面をVBAから閉じれるのでしょうか?
またWebからのダウンロード先は指定が変えられるのでしょうか?
質問は2点です。
下記にわたしが作成したプログラムを記載いたします。よろしくお願いいたします。
 
    Dim objWSH As Object
    Dim URL As String
        
        
    URL = "https://www.tele......(FULL URL
     
    Set objWSH = CreateObject("WScript.Shell")
    objWSH.Run URL, 1
 
 以上です
 

回答
投稿日時: 25/06/16 10:03:14
投稿者: Suzu

質問者さんのコードは
 
指定の文字列について
Windowsが自動的に解析し、
その文字列を、最適と思われるプログラムで開く
 
というコードです。
 
指定している文字列が、"https://www〜" なので、URLなのだと認識し
既定のブラウザにて、その URL を開いています。
 
既定のブラウザが 質問者さんの環境であれば Edegeだったので、Edegeが開いています。
既定のブラウザが Chrome である環境であれば、Chrome で開く事になります。
 
コードはここまで です。
 
Windowsが勝手にURLを解釈し、新たなタブとして開いています。
 
開き終わった後に、複数のタブから当該タブを探し出し、
閉じる場合、どう 新たに開いたタブであるか を判定する必要があります。
 
この様な場合、
1. 新たなタブは開かず、パラメーターを入力したタブに、
  ファイルダウンロードの為のボタン等があるでしょうから、それをVBAで押させる
 
2. 新たなタブを開いた際に そのタブを特定できる様にしておく
   タブをオブジェクト変数として取得しておく
 
3. 全タブから、開いている タブそれそれのアドレスを取得、開いたアドレスとマッチングをかける
どれかを行います。
 
どれも、結構面倒です。
 
 
操作するプログラムが違えば、終了させる命令も変わります。
つまり、ブラウザにより、コードを変える必要があります。
 
また

引用:
web上URLでパラメタを指定するとWebから返事(回答)が得られる。
そこで下記内容で、指定するとDOWNLoadフォルダーにFileが格納されます。
またデータも正常に返答されます。

 
から、
 
1. 既に開いているブラウザ上
   ページのフォームで、パラメーターを渡す
    或いは、アドレスバーに直接アドレスを渡す
 
2. ページ上にレスポンスが得られ
 
3. 提示のコードを実行する事で
 
4. 2.のページはそのままで、新たなページが開かれ
 
5. ダウンロードフォルダに ファイルが保存される
 
と読めます。
 
複数のページを開いて
 
ということであれば、
同一セッションの処理なので、
入力したパラメーターの内容が引き継がれておりダウンロードができている
と読めます。
 
要は、パラメーターを入力したブラウザセッションとは別のセッション
  (新たなEdegeアプリを開く や、 Chrome)で
提示コードの httpアドレスを開いても、ダウンロードは失敗するはずです。
 
 
要は、
 パラメーターを入力したセッションと同じセッション内でダウンロードを行う必要がある
 ダウンロード先を、「ダウンロード」フォルダ以外にしたい
 ダウンロード後のタブを表示したくない
 
であろうと思います。
 
 
既定のブラウザが違えばコードも変わります。
 
どんなパラメーターを入れているのか判りませんが
WEBページを表示する必要がなければ、最初から表示しない
ユーザー名・パスワードもプログラムで入力してしまう
 
を行う事になるでしょう。
 
となると・・
 
初心者備忘録さんの
VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。
https://www.ka-net.org/blog/?p=4855
 
が参考になるでしょう。
 
 
推測を前提に回答を行っています。
・パラメーターの入力手順
・複数人(規定ブラウザが違う環境)での動作がありうるか
・ブラウザを開く必要があるか?(必ず人がページ内で入力を行わないとダメか)
・開くのWEBページの作り (phpを使っている等)
でアプローチも変わる事があります。
 
前提が違うなら、それらを提示ください。
提示いただけたとして、コードが簡単になるとは限りません(逆に、複雑になる可能性が高いかも・。・)
 
なんにしても、難しいコードの部類かも知れませんね。
そこまで難しい事をするかどうか は 質問者さんの判断になるでしょう。

投稿日時: 25/06/16 16:07:52
投稿者: zenchan2

SUZU様
 
お返事ありがとうございました。
 
初心者備忘録さんの
VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。
https://www.ka-net.org/blog/?p=4855
 
上記回答を参考に
URLDownloadToFileを使ってファイルをダウンロードする方法で問題は解決いたしました。
 
お騒がせいたしました。
ありがとうございまいたしました。