• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでのWeb画面の操作方法について)

エクセルVBAでWeb画面の操作方法について

maverik1226の回答

  • ベストアンサー
回答No.1

こんばんわ。 ご呈示の条件がちと少ないので「objIEというオブジェクトを作ってnavigateさせている」と勝手に前提して回答します。 ※もしWebBrowserコントロールをお使いなら、「objIE」を「コントロール名(WebBrowser1とかね)」に置き換えて下さい まず、Dim objItem As Object と宣言したうえで こんな感じでどうでしょうか? For Each objItem In objIE.document.body.getElementsById("KakoButton") objItem.Click Exit For Next objItem もしダメならこれではいかがですか? ※同一Webページ内に同じ命令(=toKako(this, 'INTRA'))をする箇所があれば、そちらが動く可能性があります For Each objItem In objIE.document.body.getElementsByTagName("td") If objItem.innerHTML Like "*" & "toKako(this, 'INTRA')" & "*" Then objItem.Click Exit For End If Next objItem

merlionXX
質問者

お礼

> 「objIEというオブジェクトを作ってnavigateさせている」と勝手に前提して回答します。 はい、Set objIE = CreateObject("InternetExplorer.Application")としています。 試行錯誤の結果 objIE.Document.getElementById("ImageButton").Click で目的を達しました。 有難うございました。

関連するQ&A

  • エクセルVBAでWEBの操作方法

    エクセル2000です。 VBAでNavigateを使いWeb画面(イントラネット)を開き、 .Document.all.Item("Hoge****No").Value = Target.Text のような方法で入力を行い、 .Document.forms(0).submit で送信ボタンクリックして新たな画面を開くところまではできております。 次に、その結果表示された画面の、「顧客」という文字列(オンマウスで色がかわります。)をクリックするにはどのようなコードになるのでしょうか? HTMLはほとんどわかりませんが、Web画面のソースを覗いて見ると、 id="ApplicantButton" class="MnuSmall" onclick="ApplicantClick(this);" onmouseover="SmallOn(this);" onmouseout="SmallOff(this);">顧客</td></tr><tr><td width="20%">&nbsp;</td><td width="80%" というのがありましたのでこの部分だとは思うのですが、やりかたがわかりません。 よろしくおねがいします。  (o。_。)oペコッ

  • エクセルVBAでWEBの送信ボタンクリック

    エクセル2000です。 VBAでNavigateを使いWeb画面(イントラネット)を開き、エクセルのデータを入力し、イントラの送信ボタンを押して画面を先に進めるコードがあります。 余計な部分を省略して簡略化してますがこのような感じです。 Sub TEST01()   Dim tmp As String   On Error Resume Next   tmp = objIE.Name   If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する     Set objIE = CreateObject("InternetExplorer.Application")   End If   On Error GoTo 0   myData = Sheet1.Range("A1").Text   With objIE     .navigate "http://abcd.co.jp/abc/****/***/*****************/***""     .Visible = True     Do While .busy       DoEvents     Loop     .document.all.Item("ClientNo").Value = myData 'テキストボックスへ入力:Name属性で指定     Do While .busy ' = True 'オートコンプリートなどの機能が働く場合があるので、念のため待機       DoEvents     Loop     .document.forms(0).submit '送信ボタンクリック   End With End Sub 先日までは、順調に動いていました。 ところがイントラネットの仕様が若干かわったようで、エクセルのデータを入力するところまでは動きますが、そこから先に進みません。 手作業でエンターキーを押すと進むので、 .document.forms(0).submit '送信ボタンクリック の部分を SendKeys "{ENTER}" とごまかして、何とか進むことはできましたが、Sendkeyではなく本来の修正方法をご教示いただきたいのです。 HTMLはほとんどわかりませんが、ソースを表示させてみると以下の部分がそれらしく思われます。(送信ボタンにマウスを持ってくるとボタンの色が変わります) </strong></td></tr><tr><td width="38%"><input type="hidden" name="enableXuras" value="1"></td><td onclick="xcs0010SearchClick();" onmouseout="BigOff(this);" onmouseover="BigOn(this);" class="Button Command" width="10%">送信</td><td width="4%"></td><td onclick="ClearForm(document.frm);" onmouseout="BigOff(this);" onmouseover="BigOn(this);" class="Button Command" width="10%">クリア</td><td width="38%"></td></tr></table><br><div> なにとぞ、よろしくお願いいたします。  (o。_。)oペコッ

  • 画像の大きさが変わってしまいます;;

    <table border="0"> <tr> <td colspan="5"> <%= image_tag '0.jpg', :id => 'myPhoto', :class =>'photoSize' %> </td> </tr> <tr> <td> <%= image_tag '00.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '01.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '02.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '03.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '04.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> </tr> <tr> <td> <%= image_tag '05.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '06.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '07.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '08.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> <td> <%= image_tag '09.jpg', :class => 'thumbnail', :onclick => "selectPhoto(this);" %> </td> </tr> </table> このように、拡大領域があって、その下に小さな画像が10個ある形です。小さな画像をクリックすると拡大領域に表示するという形を作りたいのです。しかし、クリックをすると一つ目はしっかり、もともとある拡大領域に表示されるのですが、2個目をクリックするともっと大きく表示されてしまいます。画像1つ1つの元々のサイズがばらばらなのが原因だと思うのですが、ばらばらだった場合にも大きさが勝手に変更されないようにすることは可能でしょうか・・・?

    • ベストアンサー
    • CSS
  • WEB制作に関する質問です。コンテンツをスライドに

    ボタンをクリックするとtableの部分を垂直方向にスライドさせて切り替えたいのですが なかなか、うまくいきません。 こんな感じかなと思って、つくったのですが、まったく作動しません。 何をどうすればいいか分かりません。 どなたか、教えて下さい。 javascriptは少し分かるぐらいです。 よろしくお願いします。 コードは↓ 下のクリック画像だけ指定してあります。 html <div id="main_left">  <h2>見出し</h2>  <img src="image/cicletop.jpg" width="33" height="33" /><!-- 上のクリックボタン -->  <div id="shuraider">   <table name="shuraid1" id="shuraid1">    <tr><td colspan="2">aaaaaa</td></tr>    <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr>    <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td><td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid2" id="shuraid2"> <tr><td colspan="2">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td><td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid3" id="shuraid3"> <tr><td colspan="3">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</td></tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td> <td>aaaaaaaaaaaaaa</td></tr> </table> <table name="shuraid4" id="shuraid4"> <tr><td colspan="2">aaaaaa</td></tr> <tr><td><img src="image/buttons_06.gif" width="56" height="57" /></td><td>aaaaaaaaaaaaaaaaa</tr> <tr><td><img src="image/menu.gif" width="114" height="30" id="menu10" name="menu10" onmouseover="document.menu10.src='image/amenu.gif'" onmouseout="document.menu10.src='image/menu.gif'" onclick="document.menu10.src='image/amenu.gif'" /></td> <td>aaaaaaaaaaaaaa</td></tr> </table> </div><!-- end shuraider --> <img src="image/ciclebottom.jpg" width="33" height="33" name="shuraid_botton" id="shuraid_botton" onclick="shuraido ()" /><!-- 下のクッリックボタンでここをクリックするとtableを切り替えたい --> </div><!-- end main_left --> ここからcss #main_left{ width: 339px; } #main_left h2{ font-size: 18px; font-weight: bold; color: #ffffff; width: 339px; line-height: 2em; letter-spacing: 1em; background-image: url(../image/h2.jpg); background-color: #0F9; margin: 0; } #shuraider{ width: 337px; height: 120px; overflow: hidden; } ここからjavascript var i=1; function shuraido(){ if(i==1){ document.src="shuraid2"; i=2; } else if(i==2){ document.src="shuraid3"; i=3; } else if(i==3){ document.src="shuraid4"; i=4; } else{ document.src="shuraid1"; i=1; } } </script>

  • javascriptを短く方法ありますか?

    以下のようなテーブル行に付けたすごく長いJavascriptを class="line_color" のようにCSS等にまとめて 記述する方法はあるでしょうか? ■現在 <tr onmouseover="setPointer(this, 0, 'over', '#DDDDDD', '#CCFFCC', '#FFCC99');" onmouseout="setPointer(this, 0, 'out', '#DDDDDD', '#CCFFCC', '#FFCC99');" onmousedown="setPointer(this, 0, 'click', '#DDDDDD', '#CCFFCC', '#FFCC99');"> <td>テスト</td> </tr> ■理想 <tr class="line_color"><td>テスト</td></tr>

  • HTML・CSS ボタンの表示

    <div class="item"> <tr> <td><input type="button" value="サンドウィッチ" onclick="get_calc(this)"></td> <td><input type="button" value="おにぎり" onclick="get_calc(this)"></td> <td><input type="button" value="お茶" onclick="get_calc(this)"></td> <td><input type="button" value="お弁当" onclick="get_calc(this)"></td> </tr> </div> ボタンを画面の50%の幅に均一の大きさで表示したです. CSSわかる方,教えてください!お願いします!

    • ベストアンサー
    • CSS
  • javascript でテーブル操作

    javascriptのdeleteRowで削除したテーブルの行を再表示する方法を探しております。 下記ソース内reload.gifをクリックするとdeleteRowで消えた行をまとめて表示したいのですが何か良い方法は無いでしょうか? (*)ブラウザの再表示は使えません。 <html> <head> <title></title> <script language="JavaScript" type="text/JavaScript"><!-- function Delline(tablename,num){ document.getElementById (tablename).deleteRow(num); } //--></script> </head> <body> <img src="reload.gif"> <table id="table1"> <tr onmouseover="asrow1 = this.rowIndex"> <td class="ChkTD41">ああ<img src="del.gif" onclick="Delline('table1',asrow1)" /> <input type="text" name="a1"> </td> </tr> <tr onmouseover="asrow2 = this.rowIndex"> <td class="ChkTD41">いい<img src="del.gif" onclick="Delline('table1',asrow2)" /> <input type="text" name="b1"> </td> </tr> <tr onmouseover="asrow3 = this.rowIndex"> <td>うう<img src="del.gif" onclick="Delline('table1',asrow3)" /> <input type="text" name="c1"> </td> </tr> </table> </body> </html>

  • クリック時、テーブルの行全体を色づけするには?

    テーブル上でクリックされたら、その行全体を色づけするようにしています。 一見問題なく動作するのですが、ボタンやアンカーなどが含まれたセルがあると、そこだけ色付けができません。 そのセルを一度もクリックしない間は良いのですが、一度でもクリックすると、その後は色づけされません。 セルの中身に関わらず、選択行全体が色づけできるようにするには、どうすればよいでしょうか? IE6での現象です。 ご回答よろしくお願いします。 【HTML部分】 <table> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> </table> 【JavaScript部分】 var selRow; function rowsSelect() { var r = event.srcElement.parentElement; if(selRow!=null){ selRow.style.backgroundColor="#FFFFFF"; } selRow=r; r.style.backgroundColor="#FFDAB3"; }

  • onmouseoverを外部にまとめる

    お忙しいところすいません 以下のようなマウスオーバーで背景が変わるテーブルを制作してますが、長くなるので「onmouseover」等をまとめる方法があれば教えてください。 ■---元----------------------■ <head> </head> <body> <table> <tr> <tr> <td onmouseover="this.style.backgroundColor='#ffffcc';" onmouseout="this.style.backgroundColor='#68ceff'" bgcolor="#68ceff">リンク</td> </tr> <tr> <td onmouseover="this.style.backgroundColor='#ffffcc';" onmouseout="this.style.backgroundColor='#68ceff'" bgcolor="#68ceff">リンク</td> </tr> </table> </body> </html> ■---希望----------------------■ <head> <script language="JavaScript"> <!-- td#over { onmouseover="style.background='#ccccff'"; onmouseout="style.background='#68ceff'" } //--> </script> </head> <body> <table> <tr> <tr> <td id="over">リンク</td> </tr> <tr> <td id="over">リンク</td> </tr> </table> </body> </html> -------------------------------- CSSもJavaScript初心者ですので全く的外れな質問かもしれませんがよろしくお願いします。

  • 複数の場所(tableの中のtd)の色を変更する

    いつもお世話になっています。 以前こちらで質問させて頂き、途中までは解決したのですが (ありがとうございました)、また新たに問題が発生してしまいましたので・・・どなたか助けて下さい(応用がどうしてもできないので ・・・行き詰まってしまいました><) やりたいことはテーブルの各行の上をカーソルが通過すると その行の色が変わる(通過しおわると元の色に戻る)という プログラムをつくりたいのです。。 しかし問題は、一行そのまま色が変わるというのではないことです。 下にソースがありますが、カーソルが『りんご』上にあるときは 『くだもの1』『くだもの2』のセルも一緒に色を変える、また、 『みかん』でも『バナナ』でもカーソルが上を通過してるときは 『くだもの1』『くだもの2』のセルを一緒に色を変える・・・というようにしたいのです(『なす』や『豚肉』達も同じです) 今できているソースだと『みかん』『バナナ』『メロン』のどれも 『くだもの1』しか色が変更されません。 どうすれば『くだもの2』も一緒に色変更されるのでしょうか? わかりずらい内容でしたらすみません(><) お手数おかけしますがどうかよろしくお願い致します。 ソースは以下になります(前回教えていただいた方のソースを そのまま使用していますm(_ _)m) ※違うプログラムの組み方でも大丈夫です。 <style> .fruit{ background-Color:blue; } .vegetable{ background-Color:green; } .cereal{ background-Color:yellow; } .onmouse{ background-Color:red; color:white; text-decoration:blink; font-weight:bold; } </style> <script Language="JavaScript"> <!-- window.onload=function(){ var trs=document.getElementsByTagName("tr"); var thisClass=""; var classNames=new Array(); for(var i in trs){ if(trs[i].className) classNames[trs[i].className]=true; trs[i].onmouseover=function(){ thisClass=this.className; this.className=this.className+(this.className.indexOf(" onmouse")==-1?" onmouse":""); document.getElementById(thisClass).className="onmouse"; } trs[i].onmouseout=function(){ this.className=this.className.replace(" onmouse",""); document.getElementById(thisClass).className=""; } } for(var j in classNames){ document.getElementById(j).onmouseover=function(){ for(var i in trs){ if(this.id==trs[i].className){ trs[i].className=trs[i].className+(trs[i].className.indexOf(" onmouse")==-1?" onmouse":""); } } } document.getElementById(j).onmouseout=function(){ for(var i in trs){ if(trs[i].className) if(trs[i].className.indexOf(" onmouse")>0){ trs[i].className=trs[i].className.replace(" onmouse",""); } } } } } // --> </script> <body> <table width="300" border="1" cellspacing="0" cellpadding="0"> <tr class="fruit"> <td rowspan="4" id="fruit">くだもの1</td> <td rowspan="4" id="fruit">くだもの2</td> <td>りんご</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="fruit"> <td>みかん</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="fruit"> <td>バナナ</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="fruit"> <td>メロン</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="vegetable"> <td rowspan="2" id="vegetable">野菜1</td> <td rowspan="2" id="vegetable">野菜2</td> <td>なす</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="vegetable"> <td>とまと</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="cereal"> <td rowspan="3" id="cereal">肉1</td> <td rowspan="3" id="cereal">肉2</td> <td>豚肉</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="cereal"> <td>鶏肉</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr class="cereal"> <td>牛肉</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> </body> </html> どうぞよろしくお願い致します。