質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

1回答

2449閲覧

VBSでIEの認証画面を実行するのに、オブジェクトでサポートされてないプロパティまたはメソッドです。:というエラーが出る

tfulcrum

総合スコア43

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/11/26 05:01

編集2021/11/29 06:13

VBSでIEに自動ログインしようとしています。ログインボタンが押せません。
もしかして、触るところを勘違いしているのか、
実はここか?と考えた箇所が該当していて、そこを動かす必要があるのか?
コードです

VBS

1user = "ユーザ" 2pass = "パスワード" 3url = "入りたいURL" 4 5Dim objIE 6 7Set WSHShell=Wscript.CreateObject("Wscript.shell") 8Set objIE = WScript.CreateObject("InternetExplorer.Application") 9objIE.Visible = True 10 11Call Login(url, user, pass) 12 13' この後処理を行う予定の為、あえてコメント 14'objIE.Quit 15'Set objIE = Nothing 16 17Sub Login(url, user, pass) 18 objIE.Navigate2 url 19 'set f=objIE.document.forms(0) 20 Call WaitIE(objIE) 21 '//ログイン情報入力 22 'objIE.document.getElementsByName("inuserid")(0).Value = user 23 Set uname = objIE.Document.getElementsByName("inuserid") 24 if uname.Length > 0 Then 25 uname(0).Value = user 26 'Else 27 ' msgbox "IDを入れる場所間違い" 28 ' WScript.Quit 29 end if 30 31 32 'objIE.document.getElementsByName("inpasswd")(0).Value = pass 33 Set password = objIE.Document.getElementsByName("inpasswd") 34 if password.Length > 0 Then 35 password(0).Value = pass 36 'Else 37 ' msgbox "PWを入れる場所間違い" 38 ' WScript.Quit 39 end if 40 Call WaitIE(objIE) 41 '//ログインボタンクリック 42 'objIE.Document.getElementsByTagName("login")(0).Submit 43 set objButton = objIE.Document.getElementsByName("login") 44 if objButton.length=0 Then 45 'msgbox ("エラーです") 46 objIE.quit() 47 48 end if 49 'objButton(0).click 50 'objButton[WXPSubmitForLogin()].submit 51 'objButton(f0).submit 52 'objButton.f0.submit 53 objButton.item(0).click() 54 55 'With objIE.document 56 '.f0.submit 57 'End with 58 59 Call WaitIE(objIE) 60End Sub 61 62'********************* 63'* IEのページがロードされるまで待つ関数 64'*********************** 65Sub WaitIE(objIE) 66 Do While objIE.Busy Or objIE.ReadyState <> 4 67 WScript.Sleep(10000) 68 Loop 69End Sub 70

と書いてますが、
オブジェクトでサポートされてないプロパティまたはメソッドです。:'objButton.click'とエラーが出ます。

動かそうとしている個所は、
<input type="image" name="login" src="./images/login.gif" border="0" title="ログイン">
です。

ただし、気になる記載もあって、上の方に(少し改変して書きますが)、
function SubmitForLogin(){
if (ErrorCheck()){
document.f0.submit();
}
とあります。
実際に呼び出さなければならないのは、SubmitForLogin()の方でしょうか?
だとしたら、どうやって呼び出せばよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

状況がよくわかりませんがobjButton[0]とかでは?

sample

sample.html

HTML

1<form> 2<input type="image" name="login" src="./images/login.gif" border="0" title="ログイン"> 3</form>

sample.vbs

VBS

1main() 2sub main() 3URL="http://localhost/sample.html" 4 5Set WSHShell=Wscript.CreateObject("Wscript.Shell") 6set oIE=Wscript.CreateObject("InternetExplorer.application") 7oIE.navigate2(URL) 8oIE.visible=true 9 10WScript.sleep 5000 11 12set i=oIE.Document.getElementsByName("login") 13if i.length=0 then 14msgbox ("エラーです") 15oIE.quit() 16exit sub 17end if 18 19i.item(0).click() 20 21end sub

※テスト用に修正

投稿2021/11/26 05:04

編集2021/11/26 07:45
yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tfulcrum

2021/11/26 05:17

ありがとうございます。objButton[0]や、ヒントを頂いてobjButton(0)を試しましたが、オブジェクトがありません、のエラーが返されました。前者では、オブジェクトがありません。:"0"、のエラーで、後者はオブジェクトがありません。:"objButton(..)"と出ました
yambejp

2021/11/26 05:31

確認ですがwbsファイルからieオブジェクトをcreateObjectして navigate2でページを呼んでるのですよね? sleepでページが読み終わるの待っていますか?
yambejp

2021/11/26 06:19

sampleあげておきました
tfulcrum

2021/11/26 06:37

ありがとうございます、頂いたコードが私のコードとだいぶ違う為、これから試してみます。
tfulcrum

2021/11/26 07:06

駄目でした。同じく、オブジェクトがありません、とエラーです。 <input type="image" name="login" src="./images/login.gif" border="0" title="ログイン"> 少し省略してますが、ログインしようとしているページ、上記のかっこの中にtypeなどsubmitを指定する記述が無いのが気にはなっています。
yambejp

2021/11/26 07:17

テスト用にsampel.htmlを追記しておきました vbsも強制的に5秒またせています これで実行するとどうなりますか?
tfulcrum

2021/11/26 07:41

ありがとうございます、今度は、書き込みできません。: objButton.itemと出ました。 ただ、頂いたコードをほぼ再現したら、msgboxの行で、終了してない文字列型の定数です、のエラーが出ましたので、何か私が根本的に書き間違えてるのかもしれません。 アクセス先の都合上、これから週末アクセスできませんので、月曜日以降試してみます。 なお、私のコードに欠けてるところがありました。
yambejp

2021/11/26 07:44

しつれいしました if i.item.length=0 then ↓↓↓ if i.length=0 then 修正しておきます
tfulcrum

2021/11/29 05:49

ありがとうございます、ただmsgbox ("エラーです")を有効にすると、終了していない文字列型の定数です、と出まして、無効にすると、i.item(0).click()で書き込みできません、と出ます、変数は少し変えてますが、変えているところは、最初のmain()を削った事と、ユーザ名パスワードの記載を加えている点です。
tfulcrum

2021/11/29 06:56

すみません、UTF-8で保存してました、ShiftJISになおした所、msgbox "エラーです"が有効になり、そこで引っかかっている様です。もう少し調べてみます。
tfulcrum

2021/11/29 07:48

すみません、その前にIDも入らなかった模様です。msgboxを有効にしたら、中が空だった模様で、根本で気に何か間違えている様です、自分でもっと調べてみます。
tfulcrum

2021/11/29 08:21

function SubmitForLogin()の部分が、headerにあって、bodyに無い為に、inuseridを探せていない気がしてきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問