Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1976 / 13645 ツリー ←次へ | 前へ→

【70677】テキストボックスへの入力 ひろ 11/12/16(金) 10:22 質問[未読]
【70698】Re:テキストボックスへの入力 かみちゃん 11/12/17(土) 9:28 発言[未読]
【70700】Re:テキストボックスへの入力 ひろ 11/12/17(土) 10:30 発言[未読]
【70707】Re:テキストボックスへの入力 ichinose 11/12/18(日) 21:50 発言[未読]
【70708】Re:テキストボックスへの入力 ひろ 11/12/18(日) 22:32 発言[未読]
【70710】Re:テキストボックスへの入力 ichinose 11/12/19(月) 6:35 発言[未読]
【70709】Re:テキストボックスへの入力 かみちゃん 11/12/18(日) 22:46 発言[未読]
【70712】Re:テキストボックスへの入力 Yuki 11/12/19(月) 10:12 発言[未読]
【70716】Re:テキストボックスへの入力 ひろ 11/12/19(月) 13:30 お礼[未読]

【70677】テキストボックスへの入力
質問  ひろ  - 11/12/16(金) 10:22 -

引用なし
パスワード
   お世話になります。

ie制御マクロで困っているので教えていただければ幸いです。

下記のマクロ1は動きます
-----------------------------------------------------------

Sub マクロ1()

現在位置列 = ActiveCell.Column
現在位置行 = ActiveCell.Row

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True 'IE可視

objIE.Navigate (ActiveCell.Value)

While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend

objIE.Document.all("account").Value = Cells(現在位置行, 7)
objIE.Document.all("login_act").Click

While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend

objIE.Quit


End Sub
----------------------------------------------------------
これにエンターを押すまで待機させるようにマクロを教えていただきました。
----------------------------------------------------------
Option Explicit
Private Declare Function GetAsyncKeyState Lib "User32.dll" _
            (ByVal vKey As Long) As Long
Private Declare Sub Sleep Lib "kernel32" _
            (ByVal dwMilliseconds As Long)
Private Const VK_RETURN = &HD

Sub マクロ1()
  Dim 現在位置列 As Long
  Dim 現在位置行 As Long
  Dim objIE As Object '変数定義
  Dim r
  Dim time10
  Dim Document
  
  Set objIE = CreateObject("InternetExplorer.Application") 'object作成
  objIE.Visible = True 'IE可視
  objIE.Navigate (ActiveCell.Value)
  
While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend
  
objIE.Document.all("account").Value = Cells(現在位置行, 7)
objIE.Document.all("login_act").Click

While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend

 Do
    DoEvents
    If GetAsyncKeyState(VK_RETURN) <> 0 Then Exit Do
    Sleep (10)
  Loop
  While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend

objIE.Quit

End Sub
--------------------------------------------------
この形にするとobjIE.Document.all("account").Value = Cells(現在位置行, 7) で止まってしまいます。
objIE.Document.all("account").Value = Cells(現在位置行, 7) を削ると正常に動きます。

初歩的な質問なのかもしれませんがobjIE.Document.all("account").Value = Cells(現在位置行, 7) を正常に記入出来るように教えていただけないでしょうか?
よろしくお願いいたします。

【70698】Re:テキストボックスへの入力
発言  かみちゃん E-MAIL  - 11/12/17(土) 9:28 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>この形にするとobjIE.Document.all("account").Value = Cells(現在位置行, 7) で止まってしまいます。

止まるとはどういう意味ですか?
エラーメッセージが表示するのか、エンターキーが押せないのか?
エラーメッセージが表示されるならば、そのエラーメッセージを教えてください。

エンターキーが押せないならば、
事象が再現される、
objIE.Navigate (ActiveCell.Value)
における ActiveCell.Value の内容を教えてください。

>初歩的な質問なのかもしれませんがobjIE.Document.all("account").Value = Cells(現在位置行, 7) を正常に記入出来るように教えていただけないでしょうか?

初歩的な質問ではないように思いますが、
事象が再現される
objIE.Navigate (ActiveCell.Value)
の内容にもよると思います。

> これにエンターを押すまで待機させるようにマクロを教えていただきました。

ちなみに以下のことでしょうか?
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=149891&rev=0

他の掲示板で教えてもらったことをここで聞かれても・・・
という感じがほんの少しします。

【70700】Re:テキストボックスへの入力
発言  ひろ  - 11/12/17(土) 10:30 -

引用なし
パスワード
   かみちゃんさんありがとうございます。

ご指摘の通りの掲示板で教えていただきました。
あれから色々問題を解決するにあたりコチラの掲示板で解決出来ることが多く利用させていただいております。

エラーメッセージですが「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」となります。

objIE.Document.all("account").Value = Cells(現在位置行, 7)が探し出せなくて止まっているように見えます。

【70707】Re:テキストボックスへの入力
発言  ichinose  - 11/12/18(日) 21:50 -

引用なし
パスワード
   ▼ひろ さん:
こんばんは

>objIE.Document.all("account").Value = Cells(現在位置行, 7)
この行の手前で

MsgBox TypeName(objIE.Document.all("account"))

として、objIE.Document.all("account")これがそもそも何なのか

確認してみては?

【70708】Re:テキストボックスへの入力
発言  ひろ  - 11/12/18(日) 22:32 -

引用なし
パスワード
   ▼ichinose さん:
ありがとうございます。実行してみました。
「HTMLInputElement」と出ました。

これはいったい何をさすのでしょうか?

【70709】Re:テキストボックスへの入力
発言  かみちゃん E-MAIL  - 11/12/18(日) 22:46 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ご指摘の通りの掲示板で教えていただきました。
>あれから色々問題を解決するにあたりコチラの掲示板で解決出来ることが多く利用させていただいております。

よくわからない、コメントなのですが・・・
教えてもらったコードに関する質問は、教えてもらったところで聞いたほうがいいように思うのですが・・・

>エラーメッセージですが「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」となります。

ただ、このコードは、
どうも、教えてもらったコードとは関係ないように思います。

>objIE.Document.all("account").Value = Cells(現在位置行, 7)が探し出せなくて止まっているように見えます。

変数「現在位置行」には、どのような値が入っているかわかりますか?
0など行番号としてありえない値になっていると、
「アプリケーション定義またはオブジェクト定義のエラーです」になります。

また、表示されているDocumentに、account がないと、別のエラーメッセージになります。

【70710】Re:テキストボックスへの入力
発言  ichinose  - 11/12/19(月) 6:35 -

引用なし
パスワード
   ▼ひろ さん:
おはようございます。


>「HTMLInputElement」と出ました。
正常な表示ですねえ!!
指定された要素が入力媒体だということだと思います。

そうなると次に疑うのは
かみちゃんさんの記述のように

Cells(現在位置行, 7) が正しくセルを表しているか?
ですね!!
現在位置行の値を調べて見てください

【70712】Re:テキストボックスへの入力
発言  Yuki  - 11/12/19(月) 10:12 -

引用なし
パスワード
   ▼ひろ さん:
>こちらの
>Sub マクロ1()
>
>現在位置列 = ActiveCell.Column
>現在位置行 = ActiveCell.Row
現在位置行に値が入っていますが

>Sub マクロ1()
>  Dim 現在位置列 As Long
>  Dim 現在位置行 As Long
>  Dim objIE As Object '変数定義
>  Dim r
>  Dim time10
>  Dim Document
現在位置行には値が入っていません。
前記のマクロ1のままでよかったら
>現在位置行 = ActiveCell.Row
としましょう。

【70716】Re:テキストボックスへの入力
お礼  ひろ  - 11/12/19(月) 13:30 -

引用なし
パスワード
   皆様ありがとうございます。
正確に動きました。

yukiさんの仰る通り
Dim 現在位置列 As Long
Dim 現在位置行 As Long
現在位置行 = ActiveCell.Row

とするだけで実行できました。
今回初めて変数宣言というものを知り一歩前進しました。
ありがとうございました。

1976 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free