<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>InternetExplorer(IE)操作 | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<atom:link href="https://officevba.info/category/vba%E5%85%B1%E9%80%9A/internetexplorerie%E6%93%8D%E4%BD%9C-vba%E5%85%B1%E9%80%9A/feed/" rel="self" type="application/rss+xml" />
	<link>https://officevba.info</link>
	<description>仕事の役に立つVBA・GAS・Pythonのコードを紹介していきます。</description>
	<lastBuildDate>Sat, 31 Jan 2026 12:23:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://officevba.info/wp-content/uploads/2017/04/cropped-Excel_1-32x32.jpg</url>
	<title>InternetExplorer(IE)操作 | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<link>https://officevba.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Webページ内の同じ属性の複数の要素を一度に配列に格納するVBAコード</title>
		<link>https://officevba.info/multielementsloading/</link>
					<comments>https://officevba.info/multielementsloading/#respond</comments>
		
		<dc:creator><![CDATA[okumasahito]]></dc:creator>
		<pubDate>Sun, 05 Aug 2018 15:21:31 +0000</pubDate>
				<category><![CDATA[InternetExplorer(IE)操作]]></category>
		<guid isPermaLink="false">http://officevba.info/?p=1486</guid>

					<description><![CDATA[目次 InternetExplorer（IE）をVBAで操作するには要素をオブジェクト型の変数に格納する同じName属性のものを一括で取得する同じ属性のタグを一括で取得する方法要素数を取得する方法 InternetExp [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">InternetExplorer（IE）をVBAで操作するには要素をオブジェクト型の変数に格納する</a></li><li><a href="#toc2" tabindex="0">同じName属性のものを一括で取得する</a></li><li><a href="#toc3" tabindex="0">同じ属性のタグを一括で取得する方法</a></li><li><a href="#toc4" tabindex="0">要素数を取得する方法</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">InternetExplorer（IE）をVBAで操作するには要素をオブジェクト型の変数に格納する</span></h2>
<p>VBAを用いてIEを操作するにはウェブページから要素（タグ）を指定し、変数に格納する必要があります。</p>
<p>要素（タグ）を指定するには、それぞれの要素（タグ）に設定されているId属性やName属性などの情報を取得するgetElementByIdやgetElementsByName、getElementsByClassName、getElementsByTagNameなどを用います。</p>
<p>Id属性に関しては1つページに同じものは存在しないので問題ないのですが、Name属性、Class属性、Tag属性などは1ページに複数の要素が存在し、ページごとにいくつ存在するのかも決まっていません。</p>
<p>操作対象にすべてId属性が割り振られていれば問題ないのですが、Id属性がきちんと割り振られている要素は少なく、必然的に複数ある他の属性の中から特定のものを指定しなければならず、要素（タグ）の情報を取得し変数に格納する際のハードルの1つになっています。</p>
<p>この問題を解消するために、今回は同じ属性の要素を1度に配列に格納し、その要素数を取得するVBAコードを考えましたのでご紹介します。</p>
<h2><span id="toc2">同じName属性のものを一括で取得する</span></h2>
<p>例として操作したいウェブページに下記のようにラジオボタンが用意されていたとします。ソースを確認していただければわかりますが、Name属性はいずれも「radio」としています。</p>
<p><input name="radio" type="radio"/><br />
<input name="radio" type="radio"/><br />
<input name="radio" type="radio"/><br />
<input name="radio" type="radio"/><br />
<input name="radio" type="radio"/><br />
<input name="radio" type="radio"/></p>
<p>このラジオボタンの1つめをクリックする際は下記のようなVBAコードとなります。</p>
<div class="VBACode">Sub 最初のラジオボタンクリック()<br />
<br />
<span class="VBA_Tab1">Dim colSh As Object</span><br />
<span class="VBA_Tab1">Dim win As Object</span><br />
<span class="VBA_Tab1">Dim objIE As Object</span><br />
<span class="VBA_Tab1">Dim txtInput As Object</span><br />
<br />
<span class="VBA_Tab1">Set colSh = CreateObject(&#8220;Shell.Application&#8221;)</span><br />
<span class="VBA_Tab1">For Each win In colSh.Windows</span><br />
<span class="VBA_Tab2">If TypeName(win.document) = &#8220;HTMLDocument&#8221; Then</span><br />
<span class="VBA_Tab3">If InStr(win.document.Title, &#8220;VBA（マクロ）で仕事を楽しく効率化&#8221;) > 0 Then</span><br />
<span class="VBA_Tab4">Set objIE = win</span><br />
<span class="VBA_Tab4">Exit For</span><br />
<span class="VBA_Tab3">End If</span><br />
<span class="VBA_Tab2">End If</span><br />
<span class="VBA_Tab1">Next</span><br />
<br />
<span class="VBA_Tab1">If objIE Is Nothing Then</span><br />
<span class="VBA_Tab2">MsgBox &#8220;入力するページが見つかりません&#8221;</span><br />
<span class="VBA_Tab1">Else</span><br />
<br />
<span class="VBA_Tab2">Set txtInput = objIE.document.getElementsbyName(&#8220;radio&#8221;)(0) <span class="VBA_Comment">’0から始まる番号で同じName属性を持つタグを識別する</span></span><br />
<span class="VBA_Tab2">txtInput.Click</span><br />
<br />
<span class="VBA_Tab1">End If</span><br />
<br />
End Sub</div>
<p>getElementsbyName(“radio”)の後の数字が何番目のタグかを認識させるものですが、注意しないといけないのはこの数字はインデックス番号と呼び、配列と同じく「0」から開始されます。<br />
よって1番目のタグを取得する際は「0」を入力します。</p>
<p>今回のラジオボタンではわかりやすいですが、実際のウェブページにおいて、同じName属性の何番目かを確認するのは少し面倒ですし、同じ属性のものがいくつ存在するかを調べるのも難しいです。</p>
<p>そこで同じ属性のタグを一括で取得すると効率が良くなります。</p>
<h2><span id="toc3">同じ属性のタグを一括で取得する方法</span></h2>
<p>同じ属性のタグを一括で取得すれば、何番目のタグを取得したいのかもすぐにわかりますし、同じタグが全体でいくつ存在するのかも簡単に調べることができます。</p>
<p>手順は上記の一つのタグを取得する場合とほとんど同じですがインデックス番号を指定しないのが違いです。</p>
<div class="VBACode">Sub 六個のラジオボタンを順にクリック()<br />
<br />
<span class="VBA_Tab1">Dim colSh As Object</span><br />
<span class="VBA_Tab1">Dim win As Object</span><br />
<span class="VBA_Tab1">Dim objIE As Object</span><br />
<span class="VBA_Tab1">Dim txtInput As Object</span><br />
<span class="VBA_Tab1">Dim i as Long</span><br />
<br />
<span class="VBA_Tab1">Set colSh = CreateObject(&#8220;Shell.Application&#8221;)</span><br />
<span class="VBA_Tab1">For Each win In colSh.Windows</span><br />
<span class="VBA_Tab2">If TypeName(win.document) = &#8220;HTMLDocument&#8221; Then</span><br />
<span class="VBA_Tab3">If InStr(win.document.Title, &#8220;VBA（マクロ）で仕事を楽しく効率化&#8221;) > 0 Then</span><br />
<span class="VBA_Tab4">Set objIE = win</span><br />
<span class="VBA_Tab4">Exit For</span><br />
<span class="VBA_Tab3">End If</span><br />
<span class="VBA_Tab2">End If</span><br />
<span class="VBA_Tab1">Next</span><br />
<br />
<span class="VBA_Tab1">If objIE Is Nothing Then</span><br />
<span class="VBA_Tab2">MsgBox &#8220;入力するページが見つかりません&#8221;</span><br />
<span class="VBA_Tab1">Else</span><br />
<br />
<span class="VBA_Tab2">Set txtInput = objIE.document.getElementsbyName(&#8220;radio&#8221;)</span><br />
<span class="VBA_Tab2">For i = 0 To 5</span><br />
<span class="VBA_Tab3">txtInput(i).Click <span class="VBA_Comment">’i+1番目のタグクリック</span></span><br />
<span class="VBA_Tab3">Sleep 1000 <span class="VBA_Comment">’順番にチェックがつくのを見えるように待機時間</span></span><br />
<span class="VBA_Tab2">Next i</span><br />
<br />
<span class="VBA_Tab1">End If</span><br />
<br />
End Sub</div>
<h2><span id="toc4">要素数を取得する方法</span></h2>
<p>あまりスマートな方法ではないですが、下記の通り繰り返し処理を用ることで配列に格納した要素の数を取得することができます。<br />
配列がNothingになる要素数を確認する方法になります。</p>
<p>UBound関数は私が試した限り使えませんでした。<br />
また便利な方法を思いついたらご紹介します。</p>
<div class="VBACode">Sub 全てのラジオボタンを順にクリック()<br />
<br />
<span class="VBA_Tab1">Dim colSh As Object</span><br />
<span class="VBA_Tab1">Dim win As Object</span><br />
<span class="VBA_Tab1">Dim objIE As Object</span><br />
<span class="VBA_Tab1">Dim txtInput As Object</span><br />
<span class="VBA_Tab1">Dim i As Long</span><br />
<span class="VBA_Tab1">Dim 要素数 As Long</span><br />
<br />
<span class="VBA_Tab1">Set colSh = CreateObject(&#8220;Shell.Application&#8221;)</span><br />
<span class="VBA_Tab1">For Each win In colSh.Windows</span><br />
<span class="VBA_Tab2">If TypeName(win.document) = &#8220;HTMLDocument&#8221; Then</span><br />
<span class="VBA_Tab3">If InStr(win.document.Title, &#8220;VBA（マクロ）で仕事を楽しく効率化&#8221;) > 0 Then</span><br />
<span class="VBA_Tab4">Set objIE = win</span><br />
<span class="VBA_Tab4">Exit For</span><br />
<span class="VBA_Tab3">End If</span><br />
<span class="VBA_Tab2">End If</span><br />
<span class="VBA_Tab1">Next</span><br />
<br />
<span class="VBA_Tab1">If objIE Is Nothing Then</span><br />
<span class="VBA_Tab2">MsgBox &#8220;入力するページが見つかりません&#8221;</span><br />
<span class="VBA_Tab1">Else</span><br />
<br />
<span class="VBA_Tab2">Set txtInput = objIE.document.getElementsbyName(&#8220;radio&#8221;)</span><br />
<br />
<span class="VBA_Tab2">i = 0</span><br />
<span class="VBA_Tab2">Do Until txtInput(i) Is Nothing  <span class="VBA_Comment">’txtInput(i)に何も格納されていないところまでiを増加させる</span></span><br />
<span class="VBA_Tab2">i = i + 1</span><br />
<span class="VBA_Tab2">Loop</span><br />
<br />
<span class="VBA_Tab2">要素数 = i</span><br />
<br />
<span class="VBA_Tab2">For i = 0 To 要素数 &#8211; 1</span><br />
<span class="VBA_Tab3">txtInput(i).Click <span class="VBA_Comment">’i+1番目のタグクリック</span></span><br />
<span class="VBA_Tab3">Sleep 1000 <span class="VBA_Comment">’順番にチェックがつくのを見えるように待機時間</span></span><br />
<br />
<span class="VBA_Tab2">Next i</span><br />
<br />
<span class="VBA_Tab1">End If</span><br />
<br />
End Sub</div>
]]></content:encoded>
					
					<wfw:commentRss>https://officevba.info/multielementsloading/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
