プロが教えるわが家の防犯対策術!

vbsでIEの自動操作を行おうとしているのですが,最後のボタンだけなぜか押せません.
オブジェクトが存在しないとエラーになります.

下記は操作しようとしているところのソースです.

<div id="layerPanelSessions" style="display:">

<table cellpadding="1" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#CCCCCC">
<table cellpadding="0" cellspacing="0" border="0" width="100%">

<tr bgcolor="#EEEEEE">
<td>

<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr valign="top">
<td>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr valign="top">
<td><img src="/dana-cached/imgs/icn18x18SessionNC.gif" alt="ネットワークコネクト" width="18" height="18" border="0"></td>
<td width="100%">ネットワークコネクト <br><span class="cssSmall">システム トレイに [ネットワーク コネクト] アイコンが表示されて「接続」となっていると、ネットワーク上でセキュアにアプリケーションにアクセスすることができます。<br>
<br>そうでない場合はネットワーク コネクトの [セッションの開始] アイコンをクリックして接続します。</span> </td>

</tr>
</table>
</td>
<td align="right">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td colspan="6"><img src="/dana-cached/imgs/space.gif" width="1" height="1"></td>
</tr>
<tr>
<td bgcolor="#EEEEEE" nowrap ><img src="/dana-cached/imgs/space.gif" width="10" height="10"> <input name="btnNCStart" type="button" value="開始" onclick="self.location='/dana/nc/ncrun.cgi?launch_nc=1'; return false;"></td>
<td><img src="/dana-cached/imgs/space.gif" width="5" height="1"></td>
<td bgcolor="#CCCCCC"><img src="/dana-cached/imgs/space.gif" width="1" height="1"></td>
<td bgcolor="#EEEEEE"><img src="/dana-cached/imgs/btnPanelItemBlank.gif" alt="" width="20" height="20" border="0"></td>
<td><img src="/dana-cached/imgs/space.gif" width="1" height="1"></td>
</tr>
</table>
</td>
</tr>
</table>


<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#CCCCCC"><img src="/dana-cached/imgs/space.gif" width="1" height="1"></td>
</tr>
</table>




<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#CCCCCC"><img src="/dana-cached/imgs/space.gif" width="1" height="1"></td>
</tr>
</table>


</td>
</tr>
</table>
</td>
</tr>
</table>
</div>

で,下記が操作用の私が作成したコードです.

.Document.all("btnNCStart").Click

本当に困っています.どなたかよろしくお願いいたします.

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ボタンはidを持っていないので、Document.All()で検索できません。



document.getElementsByName("btnNCStart")(0).click

この回答への補足

早速のご回答ありがとうございます.

早速下記変えて実行してみましたがやはり,オブジェクトがないとエラーになってしまいました.

下記に作成したコード全てを記載いたします.お手数ですが,再度ご教授願えませんでしょうか?

'自動ログインスクリプト

'宣言していない変数は無効
Option explicit
'オブジェクトの作成
Set IEObj = CreateObject("Internetexplorer.Application")
Dim MemID,UsrPass,IEObj

'IDとパスワードを入力してください。
MemID = "XXXXX"
UsrPass = "XXXXX"

'With XXXXでEnd WithまでXXXXを省略できるようになります。
With IEObj
.Visible = True
'URL
.Navigate "https://XXXXX"
'メニューバーを表示するかどうか。
.MenuBar = True
'ツールバーを表示するかどうか。
.ToolBar = 0
'画面の幅を指定します。
.Width =800
'画面の高さを調節します。
.Height = 640
'画面が表示しきるまで待ちます。
While .Busy Or .ReadyState <> 4
Wend
'"xxxx"の値にそれぞれの値を入れます。
.document.all("username").Value = MemID
.document.all("password").Value = UsrPass
'ボタンを押します。
.document.forms(0).submit()
While .Busy Or .ReadyState <> 5
Wend

.document.getElementsByName("btnNCStart")(0).click

While .Busy Or .ReadyState <> 4
Wend
.Quit
End With
Set IEObj = Nothing

補足日時:2012/10/23 11:33
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QVBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法

VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。
現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。

Set IE = CreateObject("InternetExplorer.Application")
Set WshShell = CreateObject("WScript.Shell")

IE.Visible = True
IE.Navigate("https://サイトのURL")

Do Until IE.Busy = False
WScript.Sleep 1000
WshShell.SendKeys "y"
Loop
'(セキュリティの警告が出るため)
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "loginid"
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "password"
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"

操作したいページのソースの一部を抜粋すると下記のようになっています。

テキストボックス
<INPUT type="text" name="loginId" class="Necessary" size="20" maxlength="5" value="" tabindex="20">

ボタン
<INPUT class="button10" type="button" name="sentaku" value="認証" onClick="javascript:execute・・・・略

うまく操作できる方法を教えてください。
よろしくお願いします。

VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。
現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。

Set IE = CreateObject("InternetExplorer.Application")
Set WshShell = CreateObject("WScript.Shell")

IE.Visible = True
IE.Navigate("https://サイトのURL")

Do Until IE.Busy = False
WScript.Sleep 1000
WshShell.SendKeys "y"
Loop
'(セキュリティの警告が出るため)
WScript.Sleep 100
WshShell.Send...続きを読む

Aベストアンサー

set f=oIE.document.forms(0)
f.loginId.value="loginid"
f.password.value="password"
WshShell.SendKeys "{ENTER}"

テキスト領域でエンターするとsubmitになるので
エンターをsendkeysするのはありだとおもいますよ

QVBS実行時エラー オブジェクトがありません 回避方法について

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだとは思うのですが、何が原因かがわからなく。。

○エラーメッセージ
エラー:オブジェクトがありません。:'objIE.Document.getElementByName(...)(...)'
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

○コード
'Option Explicit

Dim tmp 'CSV格納
Dim tmp2 'CSV分割
Dim SiteArray(10) 'ID,PW,URL格納
Dim SiteURL 'URL格納
Dim SiteID 'ID格納
Dim SitePW 'PW格納

Dim i
dim objFSO
dim stmCsvFile

'URL,ID,PWをCSVより読込
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsvFile = objFSO.OpenTextFile("C:\Users\***\Desktop\login.csv")

Do Until stmCsvFile.AtEndOfLine = True
tmp = stmCsvFile.readline
tmp2 = Split(tmp, ",")
SiteArray(i) = tmp2(1)
i = i + 1
Loop

stmcsvfile.Close


'URL,ID,PWを格納
SiteID = SiteArray(1)
SitePW = SiteArray(2)
SiteURL = SiteArray(0)

'---------- ひらく

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate SiteURL
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'---------- ID/PASSの入力

objIE.Document.getElementsByName("username")(0).Value = SiteID
objIE.Document.getElementsByName("password")(0).Value = SitePW

'---------- SUBMIT

objIE.Document.getElementsByName("login_form")(0).Submit
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'----------

宜しくお願い致します。

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだ...続きを読む

Aベストアンサー

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるかどうかさえ確認できませんよね。
その辺りはどうなんでしょうか?それで、Length プロパティを調べるように書いたわけです。

ふつう、例えば、ここの「教えて!goo」なんかでも、IDとパスワードは、きちんと、[ID(uname, pass)]を持っています。そしてIDには、添字は存在しません。

VBAがあれば、VBEditorのローカルウィンドウで、そのプロパティを確認していただくしかないと思います。もしかしたら、最初からとれていないのかもしれません。

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるか...続きを読む

QvbscriptでIE自動入力(途中で出てくるポップアップをクリックしたい)

IEで自動化入力をvbscriptで作っております。
次々に問題というか知識の無さでつまづいています。お知恵を貸してください。

IE自動入力をしていくと、途中のクリックで次画面に
進むところでポップアップが浮き上がりスクリプトが止まってしまいます。

ポップアップの内容は、
タイトルが「セキュリティの警告」
内容が「このサイトと取り交わす情報は、ほかの人から読み取られたり変更されることは
ありません。しかし、このサイトのセキュリティ証明書には問題があります。、、、」
と出まして、
「はい(Y)」「いいえ(N)」「証明書の表示(V)」と選択肢があります。
手動で「はい」をクリックするか、Yキーを押すとまたスクリプトが進み始めます。

これを自動でクリックするためにはどうしたらいいんでしょうか。
いろいろ調べてこうして見ました。

Set wshshell=wscirpt.createobject("wscript.shell")
wshshell.AppActivate("セキュリティの警告")
wshshell.sendkeys "y"

これでは、全く動きません。おそらくこのウィンドウにコントロールが行ってないと思います。
他の手立てを教えてください。よろしくお願いします。

IEで自動化入力をvbscriptで作っております。
次々に問題というか知識の無さでつまづいています。お知恵を貸してください。

IE自動入力をしていくと、途中のクリックで次画面に
進むところでポップアップが浮き上がりスクリプトが止まってしまいます。

ポップアップの内容は、
タイトルが「セキュリティの警告」
内容が「このサイトと取り交わす情報は、ほかの人から読み取られたり変更されることは
ありません。しかし、このサイトのセキュリティ証明書には問題があります。、、、」
と出まして、
...続きを読む

Aベストアンサー

ポップアップが表示されるより早く、yが送られてしまってるんでしょう。
ポップアップが表示されるのを待たないとね。

Set wshshell=wscirpt.createobject("wscript.shell")

'セキュリティの警告が表示されるまで待つ
Do Until wshshell.AppActivate("セキュリティの警告")
WScript.Sleep 100
Loop

'セキュリティの警告が消えるまでyを送る
Do While wshshell.AppActivate("セキュリティの警告")
wshshell.sendkeys "y"
WScript.Sleep 100
Loop

永久ループに陥らないように、適度にループ抜けを入れておけばいいでしょう。

QVBScriptから指定URLを開く方法

 ある特定のWebページをVBScriptから開きたいのですが方法が探せませんでした。VBScriptからWebページを開く方法、もしくはhttp putを行う方法を教えてください。よろしくお願いします。

Aベストアンサー

こんなので、どうでしょうか?

Set objIE = Wscript.CreateObject("InternetExplorer.Application")
objIE.Navigate2 "http://www.goo.ne.jp/"
objIE.Visible = TRUE
Set objIE =Nothing

QIE を開いてページ内のリンクをクリックする VB スクリプト

IE を開いて、ページ内のリンク (アンカー) をクリックして、リンク先のページを開くまでの VB スクリプトの書き方を教えてください。

Aベストアンサー

http://www.ken3.org/cgi-bin/group/vba_ie.asp
このページが参考になりますよ。

QVBS(WSH)で開いたIEのウィンドウがアクティブにならない

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーのみのIEを起動する
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate("http://www.google.co.jp/")
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.AddressBar = False
objIE.Visible = True

'表示待ちループ
Do While objIE.Busy
WScript.Sleep 100
Loop

'[test]で検索
WshShell.SendKeys("test")
WScript.Sleep(100)
WshShell.SendKeys("{TAB}")
WScript.Sleep(100)
WshShell.SendKeys("{ENTER}")

--------------------------------------------------

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーの...続きを読む

Aベストアンサー

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動した場合、objIEだけでプロセスIDが得られないので、別の検討が必要になります。
メニュー等非表示の指定を除けば、iexplorer.exeをExecコマンドで立ち上げることは可能でしょう。

プロセスIDまで取得してきっちり組みたい場合は、WSHにてWMIという仕組みを使えばプロセス情報は得られます。

http://www.upken.jp/kb/wmi_sample.html

検索ワードとしては、「WMI」「VBScript」「プロセス」「取得」あたりでいろいろ出ると思いますよ。

IE起動前にプロセス一覧を記録し、起動後に増えたIEのプロセスをうまく引ければ実現できそうですね。

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動し...続きを読む

QVBSでHTMLソースの取得方法で

VBScriptでBODY部のHTMLソースを取得したいのですが出来ない場合があって悩んでいます。

msgbox objIE.Document.Body.InnerTextというかたちで表示させています。
ほとんどのページで問題なく出来るのですが・・・・
フレームで出来ているページに関して取得が出来ません。
そういった場合どうすればよいのでしょうか?
極論を言えば指定HTMLソースの中に文字検索が出来れば問題はないのですがソースが取得できないので検索しようがありません。

Aベストアンサー

例えば
http://www.shugiin.go.jp/index.nsf/html/index_kousei.htm
ならば
msgbox objIE.Document.frames("f2_main").Document.Body.InnerText
とか
msgbox objIE.Document.frames(2).Document.Body.InnerText
で取得できます。

ただし、フレームで別ドメインを表示している場合は、不可能です。

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;167796

QINPUTにnameがない場合のsubmit

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン">

のような感じで、nameの属性がありません。
こういうときは、VBAではどうすればログインできるのでしょうか。

初歩的な質問ですみませんが、わかる方教えてください。

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン...続きを読む

Aベストアンサー

objIE.document.forms(0).elements(2).click
または
objIE.document.getElementsByTagName("INPUT")(2).click

QFIREFOXでWebページを表示できるVBS

VBS超初心者です。
10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。

勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。

【いまの挙動】
VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。

【やりたいこと】
FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。)

今は以下のようなソースで使ってます。

----------------------
Sid = InputBox("ID を入力。")

Sid = Trim(Sid)

If Sid = "" Then WScript.Quit

If Len(Sid) <>14 Then

WScript.echo "ID が不正。"
WScript.Quit

End If

Set objie = WScript.CreateObject("internetexplorer.Application")

objie.navigate2 "http://★★★/" & Sid

objie.Visible = True

WScript.Quit
----------------------

「internetexplorer.Application」ではダメなことはわかるのですが
それ以上は私の知識ではお手上げでした。。

どなたか詳しいかた、アドバイスお願いします。

VBS超初心者です。
10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。

勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。

【いまの挙動】
VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。

【やりたいこと】
FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。)

今は以下のようなソースで使ってます。

----------------------
Sid = InputBox("ID を入力...続きを読む

Aベストアンサー

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\Mozilla Firefox\firefox.exe"" ""http://★★★/" & Sid & """", vbNormalFocus, False
Set objShell = Nothing
という感じでしょうか。

Firefoxの実行ファイルのパスは、お使いの環境に合わせて変更してください。


WshShell.Runメソッドについて
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

Firefoxのコマンドラインオプションについて
https://developer.mozilla.org/ja/docs/Mozilla/Command_Line_Options#-url_URL

QVBScriptでHTMLのセレクトボックスで表示されている値に指定したい

VBScriptでHTMLのセレクトボックスで表示されている値(value)に指定したいと思っています。どのようにすればよいのでしょうか?詳しくは下記参照。

もし、VBSで無理であるのならほかの言語で可能な言語を教えていただきたく思います。

例:”value_1”を指定してVBSで選びたい

<select name="select_name" onchange="select_onchange">
<option value="value_1">value_1_1</option>
<option value="value_2">value_2_2</option>
</select>

(注意)
下記のように位置情報で指定するのではなく、valueの値(value_1)や表示されている値(value_1_1)でしたいと思っています。

IEオブジェクト.Document.フォーム名.コンボボックス名.selectedIndex = 0からの番号

Aベストアンサー

VBSでDOMをやったこと無いので、ブックマークレットでやる方法を。
IEで新規にお気に入りを作って内容を下記にします。警告が出ますが気にせず登録。
あとは目的のページを表示して、登録したお気に入りを選択。

javascript:(function(){var sel=document.getElementById("x");var opt=sel.getElementsByTagName("option");for(var i=0;i<opt.length;++i){if(opt.item(i).getAttribute("value")=="value_2"){opt.item(i).selected="selected";break;}})()


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング