こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access VBA 他アプリケーション

Accessのフォームから他アプリケーションを起動するボタンをつくります。
起動したアプリケーションの入力フォームへ、Accessのフォームのテキストボックスの内容を書き込む事はできないでしょうか?

例えば、Accessのフォームに『OKWave』と入力されたテキストボックスと、ブラウザが開くボタンが配置されているとします。ボタンをクリックするとブラウザが起動し、起動したら任意の検索サイトが表示され、そのサイトのフォームに、Accessのフォームのテキストボックスにかかれている、『OKWave』が自動的に入力するようなVBAを書きたいと思います。

よろしくお願いします。

投稿日時 - 2009-11-16 13:40:53

QNo.5452286

暇なときに回答ください

質問者が選んだベストアンサー

>任意の検索サイト
簡単に言うけど、これが一番難しい。
例えば、IEを開いてサイトを出すだけなら以下の通りです。
Dim A, B
Set A = CreateObject("InternetExplorer.Application")
A.Navigate "http://www.yahoo.co.jp"
A.Visible = True
Do
  Set B = A.document
Loop While B Is Nothing
'----- ここまでは同じ ----
この後、サイトごとに検索用テキストボックスの指定が違う。
Yahooの場合は
B.getElementById("srchtxt").value = "OKWAVE"
Googleの場合は
B.getElementsByName("q")(0).value = "OKWAVE"
※2009/11/16現在

とりあえずは上記コードで、"OKWAVE"の所を修正すれば実現できますが、
あまたあるサイトを全部調べるなんて無理だし、突然変更される
可能性も有ります。(テキストボックスの内部的なIDを変えたことなど
利用する人の何人に有効だろうか?プロバイダが広く宣伝するとは
思えない)
この辺のメンテナンスをどうするかまで設計しておく必要があります。

投稿日時 - 2009-11-16 15:18:56

お礼

ありがとうございます。

ブラウザでは難しいのはわかりました。

例えが悪かったです。実はブラウザではなく、とあるプログラムファイルから起動するソフトの決められた入力フォームに入力したいのです。
ブラウザでも同じ方法なのかと思い変な例をあげてしまいました。

そこで、開けるソフトは決まっている場合にはやり方は変わるのでしょうか?

ネットでいろいろ調べているのですが、よくわからない為、よろしくおねがいします。

投稿日時 - 2009-11-16 15:43:52

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>とあるプログラムファイルから起動するソフト
これが分からないと回答できません。もっとも提示してもらっても、
私の知識は乏しいので、知らない可能性が大ですが・・・
簡単なのはCOMオブジェクトが提供されている場合です。
例えばAccessがそうですね。CreateObjectで起動して、あとはその
アプリケーションのプロパティやメソッドとして扱います。
これが、ウィンドウを持つ単なるアプリケーションですと親となる
ウィンドウの検索→子ウィンドウ(テキストボックスもこれ)の
検索という方法でターゲットを求め、APIで文字列を送り込むという
手法が必要です。

投稿日時 - 2009-11-16 16:20:39

あなたにオススメの質問