ここから質問投稿すると、最大4000ポイント当たる!!!! >>

初めて質問させて頂きます。
参考になる質問も拝見させて頂いたのですが、上手くいかず・・・。
ご指導頂けたらと思います。

Visual Basic 2008 Express Editionを使用しています。

webbrowserにてHTML上のページ情報を書き換えたいのですが・・・。

フォームのタイプが
text     →自己解決
radio     →自己解決
checkbox   →自己解決

select-oneのoption valueの値を書き込む時にがどういう構文を組めばいいのかわからず途方に暮れています。

プルダウンメニューは二つ連動していまして、例えば住所を選択するような感じです。
【カテゴリ1】で[東京都]を選択した時
【カテゴリ2】での選択肢は[江戸川区、港区、千代田区・・・]
また
【カテゴリ1】で[千葉県]を選択した時
【カテゴリ2】での選択肢は[市川市、浦安市、成田市・・・]

のように【カテゴリ1】のoption value値を受けて【カテゴリ2】の選択肢が変わってしまいます。

【カテゴリ1】のoption value値を"1"と書き込み、その値を受けて【カテゴリ2】での値を"11"と書き込みたい場合はどういうソースになるでしょうか?

【カテゴリ1】の部分ですでにつまずいており、初心者丸出しで申し訳ないと思っていますが、なにとぞよろしくお願い致します。

現在は、
WebBrowser1.Document.All.GetElementsByName("select name")(0).InnerHtml = "1"

と書いてみたり、色々とやってみてはいるのですが、根本的に違うのかも知れないという思いが払拭できずに相談させて頂く決意をしました。



よろしくお願い致します。

A 回答 (1件)

恐らく JavaScript で【カテゴリ1】が変更されたとき動的に【カテゴリ2】


の内容を切り替えています。Html 内のスクリプト部をみないと何とも
言い難いのですが、OnChange イベントなどが定義されているはずです。

つまり、【カテゴリ1】→【カテゴリ2】を連動させるには、【カテゴリ1】
に値を設定するだけでなく、VB から OnChange イベントを呼び出して
やる必要があります。

下記の質問が近いかと。

Webbrowser.innerHTMLの「onchange」を反応させたい。
http://oshiete1.goo.ne.jp/qa3648502.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
貼って頂いたURLですが、その質問と回答を見落としていました。
そちらを参考に、解決しました。

助かりました!ありがとうございました!!!

お礼日時:2008/02/25 15:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWebbrowser.innerHTMLの「onchange」を反応させたい。

お世話になっております。
VB2005で勉強中の者です。

Webbrowser内のHTMLで、コンボボックスの「onchange」を反応させたいのです。
値は変更することはできていますが、変更後の反応がありません。

ウェブで調べるうちに「fireEvent」を使用すれば可能かも・・・というところまでは行き着きましたが、サンプルもなく、「fireEvent」を使用できずにいます。

コンボボックスの値を変更後、Webbrowserを反応させるにはどのようなコードを入れればいいのでしょうか。

ご教示願えれば幸いに思います。
宜しくお願い致します。

Aベストアンサー

こんな感じ。

Dim Sel As Object
' // ドロップダウンリスト名が test の場合
Sel = WebBrowser1.Document.Forms(0).DomElement("test")
' // 2番目の項目を選択させる
Sel.selectedIndex = 2
' // onChange を発生させる
Sel.fireEvent("onchange")

Qプルダウンとテキストの連動

お世話になります。プルダウン1を選択すると、プルダウン2の内容が切り替わり、さらにプルダウン2を選択すると、横のテキストフィールド内にテキストが入る(プルダウン2で選択した項目の説明)というようにしたいのです。プルダウン1をえらぶと2の項目がかわる、まではできたのですが、次のテキスト変更がわかりません。プルダウン3として、そこにテキストを表示させようかと思ったのですが、やはりテキストフィールドにしてほしいといわれてしまいました。。。わかりにくい説明ですみませんが、参考になるサイトなどご存じでしたら教えてください。どうかよろしくお願い致します。

Aベストアンサー

とりあえず、簡単にソースを書いてみました。

<html>
<head>
<script type="text/javascript"><!--
msgtxt = new Array();
for (i=0; i<3; i++){
msgtxt[i] = new Array();
}

msgtxt[0][0]="a-1が選択されているときのメッセージ";
msgtxt[0][1]="a-2が選択されているときのメッセージ";
msgtxt[0][2]="a-3が選択されているときのメッセージ";
msgtxt[1][0]="b-1が選択されているときのメッセージ";
msgtxt[1][1]="b-2が選択されているときのメッセージ";
msgtxt[1][2]="b-3が選択されているときのメッセージ";
msgtxt[2][0]="c-1が選択されているときのメッセージ";
msgtxt[2][1]="c-2が選択されているときのメッセージ";
msgtxt[2][2]="c-3が選択されているときのメッセージ";


function selchg(){
sltd=document.f1.s1.selectedIndex;
if (sltd=="0"){
document.f1.s2.options[0].text="a-1";
document.f1.s2.options[1].text="a-2";
document.f1.s2.options[2].text="a-3";
}
else if (sltd=="1"){
document.f1.s2.options[0].text="b-1";
document.f1.s2.options[1].text="b-2";
document.f1.s2.options[2].text="b-3";
}
else if (sltd=="2"){
document.f1.s2.options[0].text="c-1";
document.f1.s2.options[1].text="c-2";
document.f1.s2.options[2].text="c-3";
}
}

function txtchg(){
x=document.f1.s1.selectedIndex;
y=document.f1.s2.selectedIndex;
document.f1.t1.value=msgtxt[x][y];
}
//--></script>
</head>
<body>

<form name="f1">
<select name="s1" onChange="selchg()">
<option>a
<option>b
<option>c
</select>

<select name="s2" onChange="txtchg()">
<option>a-1
<option>a-2
<option>a-3
</select>

<textarea name="t1"></textarea>
</form>

</body>
</html>

こんな感じでしょうか。

参考になれば幸いです。

とりあえず、簡単にソースを書いてみました。

<html>
<head>
<script type="text/javascript"><!--
msgtxt = new Array();
for (i=0; i<3; i++){
msgtxt[i] = new Array();
}

msgtxt[0][0]="a-1が選択されているときのメッセージ";
msgtxt[0][1]="a-2が選択されているときのメッセージ";
msgtxt[0][2]="a-3が選択されているときのメッセージ";
msgtxt[1][0]="b-1が選択されているときのメッセージ";
msgtxt[1][1]="b-2が選択されているときのメッセージ";
msgtxt[1][2]="b-3が選択されていると...続きを読む

Q複数連動型のプルダウンフォームについて

http://d.hatena.ne.jp/Mars/20071109
http://blog.sugulab.com/?p=454
上記のページを参考にして5断層のプルダウンを作成したいのですが、
どうしても4断層目と5断層目がうまく作動しません。
どなたかご教授願います。。。

Aベストアンサー

なんかあれね。
ポイントは2つ。
・value
・ダブルクォーテーション
これで直るわ。

QWebページ中の javascript をVBAから実行するには

VBAで objIE を使用して Webページ中の javascript を実行したいのですが、
onclick="~~" の記述がないケースがあり困っております。
例えば以下のような記述です。

<a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>

onclick の記述がない上記のようなケースでは、javascript の呼び出しはどのようにすればよいのでしょうか?
不可能でしょうか?

Aベストアンサー

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますから、まず最初に、ダメ元で、
id名.Click を一度試してみます。もしくは、この行の上部のコードのオブジェクトのClass名のオブジェクトのひとつから、ヒットさせようとします。

そこでダメなら、ということで、ken3の内容に入るのですが、この著者の結論(正解)は、

ご質問に沿って書くと
For i =0 To objIE.Document.links.Length -1
If objIE.Document.links(i).href ="javascript:;" Then '文字の比較は、大文字・小文字がある
   objIE.Document.Links(i).Click
End if
Next i

ということになっています。私は、このコードは少し古臭く感じます。

ここで、ken3 の所では、Testサイトを用意してくれているので、試してみましたが、ダイレクトでサイトがとれている限りは、やはり、

Testサイト:http://www.ken3.org/vba/test170f.html

 objIE.Navigate "javascript:xxxxx;"

が利くことが分かりました。ただし、実際は、ここで時間待ちをしなくてはならないでしょう。
解説は、フレームからですので、うまく行かなかったようです。

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますか...続きを読む

Q連動させたいセレクトボックスについて。

こんにちは。DB+PHPが初心者のものです。
前にもここで質問させていただきましたが、
自分なりにコードを書いてみたので
コードの訂正、ご教授をよろしくお願いいたします。

セレクトボックス1には、[table 1]の、種類が入り
れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。

下記のようにソースを書いてみましたが、
table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T)

動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。

<html>
<body>

<select name="mkoumoku">
<option selected>-------------</option>

<?php
//DB接続
$dbcon=mysql_connect("localhost","abcd","defg");
//DB選択
mysql_select_db("zozozo");

//table1を取得
$res=mysql_query("select distinct * from table1");
while ($rows=mysql_fetch_array($res)) {
echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n";
}
echo "</select>";
?>

<select name="skoumoku">
<option selected>-------------</option>
<?
//table1に連動して項目を変えたいところのコード
$res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id");
while ($rows=mysql_fetch_array($res1)) {
echo "<option value=\"".$rows['id']."\">".$rows['name']."\n";
}

//Dbクローズ
mysql_close($dbcon);

?>
</body>
</html>

こんにちは。DB+PHPが初心者のものです。
前にもここで質問させていただきましたが、
自分なりにコードを書いてみたので
コードの訂正、ご教授をよろしくお願いいたします。

セレクトボックス1には、[table 1]の、種類が入り
れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。

下記のようにソースを書いてみましたが、
table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T)

...続きを読む

Aベストアンサー

#5です。

> <form method="post" action="a.php">
> がありますが、この中の「action=」で指定される
> ファイルは、もう一回自分自身を呼び出すため?コード> と同じものでよいのでしょうか?

そうです。まずは1つ目のコンボは何を選ばれたかを自分自身
にページ遷移して$_POSTで受け取り、2つ目のコンボの内容を
決定しています。

>「登録ボタン」を押してDBへ登録するようにしたいので><input type="submit" value="登録">

OnChangeなどの部分で「submit()」ってするとページ遷移するっぽいです^^;
JavaScriptとして動作しているのかどうか知りませんが、
そのままform送信処理するようです。
初めて知りました(笑)
以下のコードでは上記内容にも対応する為、変更しています。
ついでなので、ミスやら面倒な記述をしていたのを変えました。

あと、MySQLはテーブル名、項目は大文字・小文字を区別して記述しないとダメですよ。

登録は2つ目のコンボが選択されなければ動作しません。

<?php
//DB接続
$dbcon=mysql_connect("localhost","abcd","defg");
//DB選択
mysql_select_db("zozozo");

if (isset($_POST['skoumoku']) And $_POST['skoumoku'] <> "none") {
//登録処理
regist();
exit;
}
?>
<html>
<body>
<form method="post" name="frm" action="a.php">
<select name="mkoumoku" onChange="submit()">

<?php
$slctd = ((!isset($_POST['mkoumoku']) Or $_POST['mkoumoku'] == "none")?" selected":"");
echo '<option value="none"'.$slctd.'>-------------</option>'."\n";

//table1を取得
$res=mysql_query("select distinct * from table1");
while ($rows=mysql_fetch_array($res)) {
$slctd = (($_POST['mkoumoku'] == $rows['id'])?" selected":"");
echo '<option value="'.$rows['id'].'"'.$slctd.'>'.$rows['kind'].'</option>'."\n";
}
echo "</select>";
?>

<select name="skoumoku">
<option value="none" selected>-------------</option>
<?php
//table1に連動して項目を変えたいところのコード
$res1=mysql_query("select * from table2 where table2.key='{$_POST['mkoumoku']}' order by id");
while ($rows=mysql_fetch_array($res1)) {
echo '<option value="'.$rows['id'].'">'.$rows['name'].'</option>'."\n";
}
echo "</select>";

//Dbクローズ
mysql_close($dbcon);

?>
<input type="submit" value="登録">
</form>
</body>
</html>
<?php
function regist() {
//登録処理
print <<< registed
<html>
<head>
<title>.....</title>
</head>
<body>
登録完了<br>
<p>
<a href="a.php">戻る</a>
</body>
</html>
registed;
}
?>

あと、思い通りの動作や表示がされなかった場合、
その状態のソースを見る事で原因がわかる場合もありますので、
状態が表示されている時に、ブラウザからソースの表示を行ってみて下さい。

#5です。

> <form method="post" action="a.php">
> がありますが、この中の「action=」で指定される
> ファイルは、もう一回自分自身を呼び出すため?コード> と同じものでよいのでしょうか?

そうです。まずは1つ目のコンボは何を選ばれたかを自分自身
にページ遷移して$_POSTで受け取り、2つ目のコンボの内容を
決定しています。

>「登録ボタン」を押してDBへ登録するようにしたいので><input type="submit" value="登録">

OnChangeなどの部分で「submit()」ってするとページ遷移するっぽい...続きを読む

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む

Qラジオボタンの選択肢をサーブレットで取得するには?

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="radiobutton">
割引手形 
<input type="radio" name="radiobutton" value="radiobutton">
手形貸付 
<input type="radio" name="radiobutton" value="radiobutton">
証書貸付
</p>

ブラウザー側からは
<form action="http://localhost/servlet/yuushi" method=post>
の指定を行っています。
サーブレットでの受け取り方を、
String p2=request.getParameter("radiobutton");
 とすると、p2=radiobuttonとデータがセットされました。

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="...続きを読む

Aベストアンサー

それぞれの項目の value を、ユニークにして下さい。例えば、

<input type="radio" name="radiobutton" value="1"> 割引手形 
<input type="radio" name="radiobutton" value="2"> 手形貸付 
<input type="radio" name="radiobutton" value="3"> 証書貸付

そうすれば、「手形貸付」を選択したときに

String p2 = request.getParameter("radiobutton");

とすれば、p2 は "2" になります。

Qホームページでファイルをダウンロードさせる

お世話になります。
会社のホームページを制作中です。
マニュアルなどをアップしておき、ユーザーにダウンロードしてもらうページを作ろうと思っています。
<ベクターのような>
参考になる情報ありましたら教えてください。
宜しくお願いいたします。

Aベストアンサー

ダウンロードについて、
参考URLのページに分かりやすく書いてあるようです。
例もあるのでぜひ参考にしてください。

参考URL:http://www.tohoho-web.com/wwwxx013.htm

QvbでIE操作~javascriptのonchangeイベントを使ったコンボボックスの操作の仕方を教えてください~

お世話になります。
今、IEのコンボボックスの操作をしようとしているのですがどうもうまくいかず困ってます。

コンボボックスから選んだ値をクリックしてwebbrowserのページを移動したいのですがjavascriptが絡んでるせいかわからないのですがエラーがでてしまうんです。
下に書いてるのが私のコードなんですけどエラーがでるのは下から2行目のWebBrowser1.Document.Form(0).PG_TOBU.selectedIndex = 2
このコードでオブジェクトはこのメソッドをサポートしていませんとでてしまいます。

http://www.happy2-island.com/vbs/cafe02/index.html
このページを参考にしてつくったのですが
ちょっと自力では先にすすめそうになく質問しました。
お世話になります。


---------以下コードです。---------
Private Sub Command1_Click()
Dim now As Long

WebBrowser1.Navigate "http://www.parkcity.ne.jp/~chaichan/src/javas213.htm"


now = Timer
While Timer < now + 5 '1秒間待機する
DoEvents
Wend


WebBrowser1.Document.Form(0).PG_TOBU.selectedIndex = 2

End Sub

お世話になります。
今、IEのコンボボックスの操作をしようとしているのですがどうもうまくいかず困ってます。

コンボボックスから選んだ値をクリックしてwebbrowserのページを移動したいのですがjavascriptが絡んでるせいかわからないのですがエラーがでてしまうんです。
下に書いてるのが私のコードなんですけどエラーがでるのは下から2行目のWebBrowser1.Document.Form(0).PG_TOBU.selectedIndex = 2
このコードでオブジェクトはこのメソッドをサポートしていませんとでてしまいます。

http://www.ha...続きを読む

Aベストアンサー

Forms(0)でしょ。

QVBAからIEを操作する時のウィンドウの選択の仕方がわかりません

VBAで、webページを操作するマクロを組んでいます。
具体的な手順としては、セルの商品番号をweb上の検索ボックスに入力して、別ウィンドウで開いた情報を「すべて選択」「コピー」してexcellの別シートに「貼り付け」までを行うものなのですが、
別ウィンドウで開いたページに対して、Sendkeysを行うにはどうやったらいいのでしょうか。
仮に、入力ページをA、結果ページをBとしたとき、Aに対しての入力とBページの表示までは出来ているのですが、Bページに対しての操作が出来ません。

ちなみに、事情があってwebクエリはあえて使っていません。
どなたか、いい解決方法・プロシージャをご存知でしたらよろしくお願いします。

Aベストアンサー

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kotaeru.php3?q=" & Range("A1").Value

みたいなコードで検索結果ページを開くことができると思います。同様に、商品番号
を渡すパラメータがあるはずですから、探して見て下さい。CGI にパラメータを渡す
方法が Get でも Post の場合でも検索フォームの HTML ソースを見れば分かります。

取り合えず、一度検索フォームの HTML ソースを見てみましょう。

これが可能なら、コードで IE オブジェクトを作り、直接検索結果のページを開くこ
とができますので、IE のウインドウハンドルやウインドウタイトルは簡単に取得
できます。

簡単な例です。A1 セルの値を Google で検索し、結果を A5 セルに貼り付けます。


Option Explicit

Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
  ByVal hWnd As Long _
) As Long
  
Sub Sample()

  Dim IE   As Object
  Dim strURL As String
  Dim lngRet As Long
  
  Const READYSTATE_COMPLETE = &H4
  
  strURL = "http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q="
  strURL = strURL & Range("A1").Value
   
  Set IE = CreateObject("InternetExplorer.application")
  IE.Visible = True
  IE.navigate strURL
  Do
    DoEvents
  Loop Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE
  
  ' IE のウインドウをアクティブにする
  lngRet = SetForegroundWindow(IE.hWnd)
  If lngRet <> 0 Then
    ' アクティブにできたらキー送信して結果をコピー
    SendKeys "^a", True
    SendKeys "^c", True
    ' 貼り付け
    Range("A5").Select
    ActiveSheet.Paste
  End If
  Set IE = Nothing

End Sub

どうしても検索フォームを経由し、新しい IE を開く必要がある場合は、
参考 URL 先の記事が参考になると思います。

参考 URL: http://www.ken3.org/cgi-bin/group/vba_ie.asp

ちなみに、SendKeys を使わない方法としては、IE.Document.body.innerHTML
で HTML ソースは取得し、クリップボードに転送してからペースト、、

というのでも良いかもしれません。

では。

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kot...続きを読む


人気Q&Aランキング