エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

この動画では、Microsoft Internet Controlsを使ったWebのコンテンツの取得方法について解説しています。ExcelがInternet Explorerを起動して操作します。

この教材についての過去の質問・感想

11327 : 小川慶一の回答 (2019-04-10 11:11:29)

副島 望さん:

確認してみました。

確かに、Webサーバ上のコンテンツでないと、ダメですね...。

どこか使えるサーバがあれば、そこにコンテンツを置いて試してください。
でなければ、「xampp」というソフトをインストールすると、PC内にサーバを作れますので、そこにファイルを置いて、以下のURL等で動作確認できるかと思います。
http://localhost/hina.html



> 小川様
>
> お世話になります。
>
> 下記の件ですが、
> 修正して試してみましたが、
> やはり同じところでエラー表示
> (Do While objIE.readyState <> 4 Or objIE.Busy = True)
> になってしまいます。
>
> エラーの場所にマウスポインタを持っていったところ、
> 『リモートサーバーがないか、利用できる状態ではありません』
> となっています。
>
> サーバーと接続している環境でないと、このエラーがでるのでしょうか?
> 以上、宜しくお願い致します。


11325 : 副島 望さんのコメント (2019-04-09 20:40:12)

小川慶一さん:
小川様

お世話になります。

下記の件ですが、
修正して試してみましたが、
やはり同じところでエラー表示
(Do While objIE.readyState <> 4 Or objIE.Busy = True)
になってしまいます。

エラーの場所にマウスポインタを持っていったところ、
『リモートサーバーがないか、利用できる状態ではありません』
となっています。

サーバーと接続している環境でないと、このエラーがでるのでしょうか?
以上、宜しくお願い致します。

> 副島 望さん:
>
> すいません、お返事いただいていたの気づきませんでした。
>
> 当初いただいた投稿が文字化していたため、解決が遅れてしまいました。
>
> 僕の環境では動作しました。
>
> url = "C:¥Users¥e0206¥OneDrive¥デスクトップ/hina.html"
> ↑
> hina.html の前、スラッシュではなく、円マーク(またはバックスラッシュ)が正しいです。
>
> よろしくお願いいたします。


11318 : 小川慶一の回答 (2019-04-08 09:30:05)

副島 望さん:

すいません、お返事いただいていたの気づきませんでした。

当初いただいた投稿が文字化していたため、解決が遅れてしまいました。

僕の環境では動作しました。

url = "C:¥Users¥e0206¥OneDrive¥デスクトップ/hina.html"

hina.html の前、スラッシュではなく、円マーク(またはバックスラッシュ)が正しいです。

よろしくお願いいたします。


11317 : 小川慶一の回答 (2019-04-08 09:25:48)

ざきさんさん:

すいません、いただいたコメント、今気づきました。
BASIC認証かかっていますね。

以下のサンプルを参考にしてください。
(同様の認証がかかっているウチの秘密サイトで動作確認済です)

Option Explicit

'required:
'microsoft xml 6,0.
'microsoft html object library
'micrsoft internet controls

'必要事項:
'[1] Base64エンコードされたid, passwordの文字列を生成する
'[2] [1]をリクエスト時のヘッダー情報に含める
'[3] リクエストを実行する
Sub BasicCertificationLogin()
    Dim sId As String   '認証id
    Dim sPass As String '認証pass
    Dim sEnc As String  'base64エンコード済id:pass文字列
    sId = "myid"
    sPass = "mypass"
    sEnc = EncodeBase64(sId & ":" & sPass) '[1]
    
    Dim sHead As String
    sHead = "Authorization: Basic " & sEnc & vbCrLf  '[2]
    
    Dim url As String
    url = "http://foo.bar/"
    
    Dim objIE As New InternetExplorer
    objIE.Visible = True
    
    objIE.navigate url, , , , sHead '[3]
End Sub
Function EncodeBase64(st As String) As String
  Dim arrData() As Byte
  arrData = StrConv(st, vbFromUnicode)

  Dim objXML As MSXML2.DOMDocument60
  Dim objNode As MSXML2.IXMLDOMElement

  Set objXML = New MSXML2.DOMDocument60
  Set objNode = objXML.createElement("b64")

  objNode.DataType = "bin.base64"
  objNode.nodeTypedValue = arrData
  EncodeBase64 = objNode.text

  Set objNode = Nothing
  Set objXML = Nothing
End Function



> 返信ありがとうございます。
> アプリという表現が正しかったのかわかりませんが、サイト上で顧客管理をしています。ここでURLをさらしていいのかわからなかったので、添付ファイルにて、URLを送ります。


11315 : 副島 望さんのコメント (2019-04-03 20:26:12)

小川慶一さん:

> 副島 望さん:
>
> これだけだとわかりません。
>
> マクロの入ったファイルと hina.html をまとめて zip ファイルにして送付いただけますか。
> よろしくお願いします。
>
>
> > 小川慶一様:
> > [code]Sub DomSample2()
> > ' On Error Resume Next
> >
> > Dim objIE As New InternetExplorer
> > objIE.Visible = True
> >
> > Dim url As String
> > ' url = "https://www.exvba.com/ws/domform.html?time="; & Format(Now, "yymmddhhnnss")
> > '???Q?l????ASSL??????????g??????B
> >
> > url = "C:/Users/e0206/OneDrive/?f?X?N?g?b?v/hina.html"
> >
> > '?e?X?g?y?[?W??AID?????????
> > objIE.navigate url
> >
> > '?y?[?W??¥?????????
> > Do While objIE.ReadyState <> 4 Or objIE.Busy = True
> > DoEvents
> > Loop
> > [code]
> > 上記マクロを実行すると、DO While のところで
> > オートメンションエラーが発生します。
> > 自分のデスクトップ上のHTMLファイルをVBAで
> > 開こうとするとエラーになるのでしょうか?
> >
> > 以上、宜しくお願い致します。
> >
> >


小川様

お世話になっております。
副島です。

ZIPファイルを送付致します。
ご確認、宜しくお願い致します。


11314 : ざきさんさんのコメント (2019-04-03 13:31:28)

すみません。質問に答えてなかったです。
>このサービスは、IEも利用可能なブラウザとしてリストされていますでしょうか。

できるだけFirefoxを使ってくださいと言われていたので、IEは利用可能なブラウザとしてリストされてないのかもしれません。
ちなみに、IEでもログイン自体はできました。


11313 : ざきさんさんのコメント (2019-04-03 13:24:33)

返信ありがとうございます。
アプリという表現が正しかったのかわかりませんが、サイト上で顧客管理をしています。ここでURLをさらしていいのかわからなかったので、添付ファイルにて、URLを送ります。


11312 : 小川慶一の回答 (2019-04-03 11:18:20)

副島 望さん:

これだけだとわかりません。

マクロの入ったファイルと hina.html をまとめて zip ファイルにして送付いただけますか。
よろしくお願いします。


> 小川慶一様:
> [code]Sub DomSample2()
> ' On Error Resume Next
>
> Dim objIE As New InternetExplorer
> objIE.Visible = True
>
> Dim url As String
> ' url = "https://www.exvba.com/ws/domform.html?time="; & Format(Now, "yymmddhhnnss")
> '???Q?l????ASSL??????????g??????B
>
> url = "C:/Users/e0206/OneDrive/?f?X?N?g?b?v/hina.html"
>
> '?e?X?g?y?[?W??AID?????????
> objIE.navigate url
>
> '?y?[?W??¥?????????
> Do While objIE.ReadyState <> 4 Or objIE.Busy = True
> DoEvents
> Loop
> [code]
> 上記マクロを実行すると、DO While のところで
> オートメンションエラーが発生します。
> 自分のデスクトップ上のHTMLファイルをVBAで
> 開こうとするとエラーになるのでしょうか?
>
> 以上、宜しくお願い致します。
>
>


11311 : 小川慶一の回答 (2019-04-03 11:16:49)

ざきさんさん:

> 小川先生、おはようございます。
> 先日はロリポップのログインの件ありがとうございました。
> 無事に先に進むことができ、ロリポップ上に溜まったメール約50件から、顧客番号、氏名、電話番号を抜き取ることに成功しました。今までコピペで対応していたのが、馬鹿らしく感じます。

おお、よかったです。
こういうことうまくいくと、とてもうれしいですよね (^^

ご質問の件。

これだけでは分からないですね。
このサービスは、IEも利用可能なブラウザとしてリストされていますでしょうか。

あと、さしつかえなければ、何というアプリなのか?と、ログインをURL教えてください。



> 小川先生、おはようございます。
> 先日はロリポップのログインの件ありがとうございました。
> 無事に先に進むことができ、ロリポップ上に溜まったメール約50件から、顧客番号、氏名、電話番号を抜き取ることに成功しました。今までコピペで対応していたのが、馬鹿らしく感じます。
>
> 次のステップとして、仕事で使用しているクラウド型の顧客アプリにログインしたいのですが、IEでひらくと、添付ファイルのような画面になり、会社で使ってるFirefoxで開く画面と違い困っています。
> IEでひらくと ctrl + Uを押してもソースコードでないので、分析しようがありません。
>
> 何か良い方法があったら教えてほしいです。
> よろしくお願いします。


11310 : ざきさんさんのコメント (2019-04-03 09:46:45)

小川先生、おはようございます。
先日はロリポップのログインの件ありがとうございました。
無事に先に進むことができ、ロリポップ上に溜まったメール約50件から、顧客番号、氏名、電話番号を抜き取ることに成功しました。今までコピペで対応していたのが、馬鹿らしく感じます。

次のステップとして、仕事で使用しているクラウド型の顧客アプリにログインしたいのですが、IEでひらくと、添付ファイルのような画面になり、会社で使ってるFirefoxで開く画面と違い困っています。
IEでひらくと ctrl + Uを押してもソースコードでないので、分析しようがありません。

何か良い方法があったら教えてほしいです。
よろしくお願いします。


11309 : 副島 望さんのコメント (2019-04-03 05:14:07)

小川慶一様:
[code]Sub DomSample2()
' On Error Resume Next

Dim objIE As New InternetExplorer
objIE.Visible = True

Dim url As String
' url = "https://www.exvba.com/ws/domform.html?time="; & Format(Now, "yymmddhhnnss")
'???Q?l????ASSL??????????g??????B

url = "C:/Users/e0206/OneDrive/?f?X?N?g?b?v/hina.html"

'?e?X?g?y?[?W??AID?????????
objIE.navigate url

'?y?[?W??¥?????????
Do While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Loop
[code]
上記マクロを実行すると、DO While のところで
オートメンションエラーが発生します。
自分のデスクトップ上のHTMLファイルをVBAで
開こうとするとエラーになるのでしょうか?

以上、宜しくお願い致します。


11306 : 田中 宏明さんのコメント (2019-03-29 22:09:01)

小川慶一さん:

参照すべきライブラリを見つける方法は大変参考になります。
あちこちからコレクションしたマクロが手元にたくさんあるので、実験してみます。

> こういうリファクタリングをするときの僕の作業の流れは、だいたい、以下です。
> [1] まずは Object型で書いて動作確認してみる
> [2] 変数に参照設定が無事に入ってから、 Typename関数で固有オブジェクト型の型名を調べる
> [3] As Object の Object の部分を [2] で取得とした文字列にリライトしてみる
> [4] [3]で動けばもうけもの。ダメなら、[2]で調べた文字列をネット等で検索
> [5] 参照すべきライブラリをネットで見つける
> [6] 参照すべきライブラリへの参照設定をする
> [7] [6]でうまく動けばもうけもの。ダメなら、諦めて As Object に戻す


11305 : ざきさんさんのコメント (2019-03-29 08:55:49)

小川慶一さん:
返信ありがとうございます。
内容を噛みしめて体に染み込ませます。


11304 : 小川慶一の回答 (2019-03-29 08:35:50)

ざきさんさん:

全体の添削かねて、2パターンほど書いてみました。
参考にしてください。

Option Explicit

Sub LoginLollipop1()
    Dim objIE As New InternetExplorer
    objIE.Visible = True
    objIE.navigate "https://tools.lolipop.jp/mail/"

    Do While objIE.readyState <> 4 Or objIE.Busy = True
        DoEvents
    Loop
    
    Dim div_login As IHTMLDivElement
    Set div_login = objIE.document.getElementById("login_main")
    Debug.Print div_login.innerHTML
    
    Dim m_add As HTMLInputTextElement
    Dim m_pass As HTMLInputTextElement
    Dim m_check As HTMLInputButtonElement
    Set m_add = div_login.getElementsByTagName("input")(0)
    Set m_pass = div_login.getElementsByTagName("input")(1)
    Set m_check = div_login.getElementsByTagName("input")(2)
    
    m_add.Value = "info@foo.bar"
    m_pass.Value = "hogehoge1234"
    m_check.Click
    
    Dim div_btn As IHTMLDivElement
    Set div_btn = objIE.document.getElementById("login_btn")
    Debug.Print div_btn.innerHTML
    
    Dim img As IHTMLImgElement
    Set img = div_btn.getElementsByTagName("img")(0)
    Debug.Print img.outerHTML
    
    img.Click
End Sub

Sub LoginLollipop2()
    Dim objIE As New InternetExplorer
    objIE.Visible = True
    objIE.navigate "https://tools.lolipop.jp/mail/"

    Do While objIE.readyState <> 4 Or objIE.Busy = True
        DoEvents
    Loop
    
    Dim div_login As IHTMLDivElement
    Set div_login = objIE.document.getElementById("login_main")
    
    Dim iElems As Object
    Set iElems = div_login.getElementsByTagName("input")
    Debug.Print TypeName(div_login.getElementsByTagName("input"))
    
    Dim i As HTMLInputElement
    For Each i In iElems
        Select Case i.Name
            Case "mail_add"
                i.Value = "info@foo.bar"
            Case "mail_pass"
                i.Value = "hogehoge1234"
            Case "auto_login_mail"
                i.Click
        End Select
    Next
    
    Dim div_btn As IHTMLDivElement
    Set div_btn = div_login.getElementsByTagName("div")(0)
    
    Dim img As IHTMLImgElement
    Set img = div_btn.getElementsByTagName("img")(0)
    
    img.Click
End Sub


> 小川先生、こんにちは。質問です。
> 仕事でロリポップWebメーラーにある情報を抜き取る作業をしたいのですが、ログインするところで躓いています。
>
> https://tools.lolipop.jp/mail/
>
> メールアドレスとメールパスワードの自動入力はなんとかマクロで作成できました。
> しかし、どうやっても「ログイン」の画像をクリックして送信する方法がわかりません。
> ちなみに、「Microsoft HTML Object Library」と「Microsoft Internet Controls」は参照済みです。作成したエクセルファイルを添付します。
> アドバイスをお願いします。


11303 : 小川慶一の回答 (2019-03-29 07:04:46)

受講生 さん:

おはようございます。

>田中さん

ありがとうございます。

再現には表示完了を待つことが必要そうな雰囲気です。(ie_error_sample 内の [3] )

エラーの詳細を調べ、期待するエラーの場合のみ IE_KILL に進むようにしてみました。
より丁寧にやるならそのほかのエラーの場合は云々、とかまで書くべきではありますが。

変数名も(ウチの講座受講生向けに)趣旨が分かりやすいものにリファクタリングしました。

あと、変数宣言時に Object型を使うのは好みでないので、先にライブラリを読み込んで、型を明示してみました。
(そのほかもいろいろあり、もはや原型あまりとどめてないので、参考リンクも削除)

こういうリファクタリングをするときの僕の作業の流れは、だいたい、以下です。
[1] まずは Object型で書いて動作確認してみる
[2] 変数に参照設定が無事に入ってから、 Typename関数で固有オブジェクト型の型名を調べる
[3] As Object の Object の部分を [2] で取得とした文字列にリライトしてみる
[4] [3]で動けばもうけもの。ダメなら、[2]で調べた文字列をネット等で検索
[5] 参照すべきライブラリをネットで見つける
[6] 参照すべきライブラリへの参照設定をする
[7] [6]でうまく動けばもうけもの。ダメなら、諦めて As Object に戻す

ということで、以下。
当初ご質問された受講生さんにとっても、かなり処理の全体像が分かりやすくなったかな、とも。

Option Explicit
Public Sub ie_error_sample()
    'Required: Microsoft Internet Controls
    Dim objIE As New InternetExplorer
    
    On Error Resume Next
    objIE.Visible = True '[1]
    If Err.Number <> 0 Then
        Debug.Print Err.Number & vbTab & Err.Description
        If Err.Number = -2125463506 Then
            IE_kill
            objIE.Visible = True '[2] [1]でしくじった visible = true に再トライ
        End If
    End If
    
    Dim url As String
    url = "http://www.exvba.com/ws/domformradio.html"
    objIE.navigate url

    '[3] 表示完了を待つ(問題の再現には最低限これが必要そう)
    Do While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True
        DoEvents
    Loop
    
    objIE.Quit 'テスト実行上面倒なので都度自動的に終了することにした
End Sub

Private Sub IE_kill()
    'Required: Microsoft WMI Scripting V1.2 Library
    Dim procCollection As SWbemObjectSet 'プロセスのコレクション
    Dim proc As SWbemObjectEx            '個々のプロセス
 
    Const S_PIE As String = "iexplore.exe"
     
    On Error Resume Next
    Set procCollection = GetObject("winmgmts:").InstancesOf("win32_process")
    For Each proc In procCollection
        If LCase$(proc.Name) = S_PIE Then '[*]
            proc.Terminate
            If Err.Number = 0 Then
                Debug.Print "KILL OK"
            Else
                'For文に入った段階では存在したIEのプロセスが .terminate を実行する前に消えた、ということはあり得るかも
                'たとえば、「[*]にブレークポイントを入れてこのマクロを止め、しばらく放置していた」等
                Debug.Print "KILL NG:" & Err.Number & vbTab & Err.Description
                MsgBox "KILL NG:" & Err.Number & vbNewLine & Err.Description
            End If
        End If
    Next proc
    On Error GoTo 0
    Set procCollection = Nothing
End Sub


11301 : ざきさんさんのコメント (2019-03-28 11:33:13)

小川先生、こんにちは。質問です。
仕事でロリポップWebメーラーにある情報を抜き取る作業をしたいのですが、ログインするところで躓いています。

https://tools.lolipop.jp/mail/

メールアドレスとメールパスワードの自動入力はなんとかマクロで作成できました。
しかし、どうやっても「ログイン」の画像をクリックして送信する方法がわかりません。
ちなみに、「Microsoft HTML Object Library」と「Microsoft Internet Controls」は参照済みです。作成したエクセルファイルを添付します。
アドバイスをお願いします。


11300 : 受講生さんのコメント (2019-03-27 09:01:59)

田中 宏明さん、小川先生コメントありがとうございます。
サンプルコードまでいただきありがたいです。
自分のせいではなく、OSのエラーであれば一安心ということで・・・腕力でなんとかします!!!


11299 : 田中 宏明さんのコメント (2019-03-27 08:41:59)

受講生 さん:

こんにちは。
IEは原因不明のエラーがよく起こり、原因を特定できないケースがほとんどです。
小川先生の動画解説をヒントに、すべてのIEを強制終了する対策を書いててみました。
(私の環境では、「オートメーションエラー」が再現しないので、これで解決できなかったら、すみません。)

Sub DomSampleErr()  
    'IEをExcelから起動し、Excelから制御した状態にします
    Dim objIE As New InternetExplorer
    
    'エラー対策の開始
    On Error GoTo ErrIE
    objIE.Visible = True
    'エラー対策の終了
    On Error GoTo 0
    
    Dim url As String
    url = "http://www.exvba.com/ws/domformradio.html?time=" & Format(Now, "yymmddhhnnss")
    '↑Cacheからのデータ取得になるのを嫌い、都度、違うURLになるようにした
    
    'テストページを、IDで読み込みます
    objIE.navigate url

    'コンテンツ内の所定のオブジェクトを取得途中の処理記載略
    Exit Sub

ErrIE:
    Set objIE = Nothing
    IE_kill 'すべてのIEを強制終了
    MsgBox "エラーのため、すべてのIEを強制終了しました。"
End Sub


'参考サイト:EXCEL VBA プロセスのKILL
'http://chaser-news.com/archives/77
Private Sub IE_kill()
    Dim strProcName As String '終了するプロセス名
    Dim objProcList As Object 'プロセス一覧
    Dim objProcess As Object  'プロセス情報
    Dim lngKillNum As Integer '終了したプロセス数

    strProcName = "iexplore.exe": lngKillNum = 0
    
    On Error Resume Next
    Set objProcList = GetObject("winmgmts:").InstancesOf("win32_process")
    For Each objProcess In objProcList
        If LCase$(objProcess.Name) = strProcName Then
            objProcess.Terminate
            If Err.Number = 0 Then
                lngKillNum = lngKillNum + 1
            Else
                Debug.Print "エラー: " & Err.Description
            End If
        End If
    Next objProcess
    On Error GoTo 0
    Set objProcList = Nothing
End Sub


> 繰り返すと「objIE.Visible = True」のところでプログラムがストップします。原因がわからず、困っています。「オートメーションエラー」と書いてあります。助けてください。


11298 : 小川慶一の回答 (2019-03-27 07:41:34)

受講生 さん:

おはようございます。

状況確認しました。
OSのバグぽいですね。

エクセルという安全地帯を超えて作業をするプログラムを書こうとすると、どうしても、こういうことは起こります。
ある意味、着実に技術向上しているからこそこういう問題に出会えるということでもあります。

問題の再現方法、原因、対策について、以下の動画にまとめました。
OS側でいずれ修正が入るのでは?とは思いますが...。それまでは、以下に示すように、腕力で対処しましょう。
https://www.dropbox.com/s/3ej5fh08e1c44nv/IE_Automation_Error.mp4?dl=0

ひきつづきよろしくお願いいたします。


> 質問です。
> 「05_IE制御してコンテンツを取得.xls」ファイル中にある、マクロを実行したのですが、最初の数回は正常に実行できるのですが、繰り返すと「objIE.Visible = True」のところでプログラムがストップします。原因がわからず、困っています。「オートメーションエラー」と書いてあります。助けてください。
>
> ちなみに、再起動して再度マクロを実行しても、同じ症状がでます。
> 回答よろしくおねがいします。


11296 : 受講生さんのコメント (2019-03-26 09:49:07)

質問です。
「05_IE制御してコンテンツを取得.xls」ファイル中にある、マクロを実行したのですが、最初の数回は正常に実行できるのですが、繰り返すと「objIE.Visible = True」のところでプログラムがストップします。原因がわからず、困っています。「オートメーションエラー」と書いてあります。助けてください。

ちなみに、再起動して再度マクロを実行しても、同じ症状がでます。
回答よろしくおねがいします。


10041 : 小川慶一の回答 (2018-05-24 12:34:12)

受講生 さん:

複数の方法を紹介しているのは、どれがベストか?は状況により異なるからです。
お役に立てればと!



> 田中 宏明様
>
> わざわざコメントありがとうございました。
> やはり一筋縄ではいかないのですね。
> 参考ページを見ながら、
> MSXMLやWinHttpRequestの検討もしつつ
> 研究してみます。
> ありがとうございました。


10038 : 受講生さんのコメント (2018-05-23 12:23:46)

田中 宏明様

わざわざコメントありがとうございました。
やはり一筋縄ではいかないのですね。
参考ページを見ながら、
MSXMLやWinHttpRequestの検討もしつつ
研究してみます。
ありがとうございました。


10030 : 田中 宏明さんのコメント (2018-05-21 19:35:30)

横から失礼します。
IEでクリックするには、難易度の高いページです。
> ソースは次のようなものでした。
> <dd class="nav-login-btn"><a href="javascript:void(0);" > > onclick="javascript:func_request_Link('LOGIN'); return false;">ログイン</a></dd>

下記が参考になります。
Webページのスクリプトを実行するVBAコード
http://officevba.info/vbaexecscript/


10028 : 小川慶一の回答 (2018-05-21 18:41:32)

受講生 さん:

以下を読む限りでは、IEで手作業で1回ログインをし、その後、MSXMLでログイン後にはいれるページの情報を取得するというのが一番簡単な流れになりそうな気はします。


> (追記)
> ちなみに、IDとパスワードを入力する部分にはIDがついていたのでgetElementByIdでの操作は成功済です。
> ログインボタンだけがIDの記載がなかったので詰まってしまいました。


10027 : 小川慶一の回答 (2018-05-21 18:39:50)

受講生 さん:

> 何度もすみません、
> 以下の件で、
> .getElementsByClassName("nav-login-btn")を使ってみたところ、
> 要素の取得はできるようなのですが、クリックができませんでした。
> .clickと書くだけではダメなのでしょうか。

クリックする場面までの全体のソースを見ていないので何とも言えません。

例えば…。
getElementsByClassNameで得られる戻り値はオブジェクトの配列です。
ですので、戻り値に対して(数字)と、配列の中のどの要素に対してクリックをするのかというところまで指定しなければなりませんがそこまで書かれましたでしょうか。


> また、それとは別の質問で、SWFコンテンツ?というのでしょうか、

「swf」で検索すると分りますが、フラッシュのコンテンツです。
僕なら、エクセルからIEを操作するという方法で追求するのはやめて、MSXMLか、WinHttpRequestを使うことを検討します。

ただ、フラッシュがどんな処理をしているのか?ということを知るのはちょっと容易ではないので、他に手がかりがなさそうだと、これは苦戦しそうですね。


> 以下のようなソースの場合、どのようにすればクリックできますでしょうか
> getElementByIdではできませんでした。

<object type="application/x-shockwave-flash" id="MainExternalImport" name="MainExternalImport" align="middle" data="./swf/MainExternalImport_ver1_4.swf" width="105" height="23">
<param name="quality" value="high">
<param name="bgcolor" value="#ffffff">
<param name="allowscriptaccess" value="sameDomain">
<param name="allowfullscreen" value="true">
</object>


10023 : 小川慶一の回答 (2018-05-21 18:19:53)

受講生 さん:

他の方法もありそうです。

例えば、getElementsByClassNameも使うとか。

とはいえ、どういう方法がベストか?ということになると、ソースのこの部分だけからでは何とも言えません。


10014 : 受講生さんのコメント (2018-05-21 13:37:46)

何度もすみません、
以下の件で、
.getElementsByClassName("nav-login-btn")を使ってみたところ、
要素の取得はできるようなのですが、クリックができませんでした。
.clickと書くだけではダメなのでしょうか。


また、それとは別の質問で、SWFコンテンツ?というのでしょうか、
以下のようなソースの場合、どのようにすればクリックできますでしょうか
getElementByIdではできませんでした。

<object type="application/x-shockwave-flash" id="MainExternalImport" name="MainExternalImport" align="middle" data="./swf/MainExternalImport_ver1_4.swf" width="105" height="23"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><param name="allowscriptaccess" value="sameDomain"><param name="allowfullscreen" value="true"></object>


10009 : 受講生さんのコメント (2018-05-20 22:26:05)

(追記)
ちなみに、IDとパスワードを入力する部分にはIDがついていたのでgetElementByIdでの操作は成功済です。
ログインボタンだけがIDの記載がなかったので詰まってしまいました。


10008 : 受講生さんのコメント (2018-05-20 22:18:58)

IEで、IDとパスワードを入力してログインボタンを押す、
という操作をしたいのですが、
ログインボタンにはIDがついておらず、
getElementByIdでの操作ができそうにありません。
また、elementsでもないようで、エラーになってしまいました。

ソースは次のようなものでした。
<dd class="nav-login-btn"><a href="javascript:void(0);" onclick="javascript:func_request_Link('LOGIN'); return false;">ログイン</a></dd>


ネットで調べたところ、以下のようなコードが見つかり、
これでやったら無事にログインボタンが押されました。
この場合は、このような方法しかないでしょうか。

Dim ie As Object
Dim tag As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://目的のURL";
Do While ie.Busy Or (ie.ReadyState <> 4): DoEvents: Loop
For Each tag In ie.document.getElementsByTagName("a")
If tag.InnerText = "ログイン" Then
tag.Click
Exit For
End If
Next


3921 : 小川慶一の回答 (2015-03-02 08:38:03)

匿名 さん:

ヾ(´ー`)ノ ヾ(´ー`)ノ ヾ(´ー`)ノ


3919 : 受講生さんのコメント (2015-03-01 11:17:13)

小川慶一 さん:

こちらこそ、返事が遅くなりました。
この件は解決したというご認識で問題ございません。
ご回答いただきありがとうございました。

少しずつですが、ここで得た知識を仕事に展開しようと模索している最中です。
また質問するつもりですので、その際はよろしくお願いいたします。

>匿名 さん:
>
>お返事、おそくなりました。
>
>なるほど。要は、通常のDOMオブジェクト取得に使えるメソッドは利用可能。
>その方法で取得したオブジェクトに対しても .Click等のメソッドを利用可能、ということのようですね。
>
>よかったです。解決したかと思いますが、どうでしょうか。
>


3864 : 小川慶一の回答 (2015-02-19 08:09:21)

匿名 さん:

お返事、おそくなりました。

なるほど。要は、通常のDOMオブジェクト取得に使えるメソッドは利用可能。
その方法で取得したオブジェクトに対しても .Click等のメソッドを利用可能、ということのようですね。

よかったです。解決したかと思いますが、どうでしょうか。


3853 : 受講生さんのコメント (2015-02-15 13:40:11)

小川慶一 さん:

こんにちは。
ご指摘の通り、途中で止まっておりました。
ただ再度見直しをしたところ、「回避策」について下記のコードでマクロを実行したら
イメージ通りに最後まで実行できました。

 
Sub DomSample3_rev2()
    Dim objIE As New InternetExplorer
    objIE.Visible = True
    Dim fms As Object
    Dim url As String
    url = "http://www.exvba.com/ws/domform.html?time=" & Format(Now, "yymmddhhnnss")
    
    'テストページを、IDで読み込みます
    objIE.navigate url

    'ページの表示完了待ち
    Do While objIE.readyState <> 4 Or objIE.Busy = True
        DoEvents
    Loop
    
    Set fms = objIE.Document.GetElementsByTagname("form") 'getElementsbyTagnameの戻り値はコレクションなので注意!
    Debug.Print fms(0).OuterHtml
    fms(0).GetElementsByTagname("input")(0).Value = "Web連携セミナー"
    fms(0).GetElementsByTagname("input")(1).Value = "小川慶一"
    fms(0).GetElementsByTagname("input")(2).Click
    
End Sub


>匿名 さん:
>
>すいません。伝わってませんでしたか。
>Do ... Loop の構造が終った直後です。ループの中だと、まだコンテンツの読込→レンダリングが終了していないので。
>
>回避策のやり方は、どこでひっかかりますか?
>上記と同じエラーだから、 Do Loop のところでひっかかっていませんか?
>
>>小川慶一 さん:
>>
>>おはようございます。
>>お忙しい中、すぐにご対応いただきありがとうございます。
>>今回は割り切ってしまおうと思います。良い経験をできたと考えます。
>>ありがとうございました。
>>
>>※以下はご参考です。
>>DoEvents のあとのところで「Debug.Print objIE.Document.forms(0).OuterHtml」を追加してみました。
>>→結論:残念ながら、下記メッセージが表示されました。
>>「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」
>>※ご参考:実行したコード(該当部分のみ抜粋)
>>
 
>>    'ページの表示完了待ち
>>    Do While objIE.readyState <> 4 Or objIE.Busy = True
>>        DoEvents
>>        Debug.Print objIE.Document.forms(0).outerhtml
>>    Loop
>> 

>>
>>
>>「回避策の提案」を実施してみました。
>>→結論:残念ながら、下記メッセージが表示されました。
>>「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」
>>
>>>小川慶一 さん:
>>>
>>>追記です。
>>>
>>>このWeb連携講座でリクエストとレスポンスの取得方法だけでも3パターン (Microsoft WinHTTP Services, version 5.1, Microsoft XML, Microsoft Internet Controls) 、コンテンツの解析だけでも3パターン(DOM, Microsoft ActiveX Data Objects, Document.forms(0) のようなコレクションでの表現) を提示しているのも「環境によって仕様書どおりに行かないことも多い」ことを考慮してのことです。
>>>
>>>エクセルのバージョンもそうですが、Windowsのバージョン、使用するライブラリのバージョン、ウェブページの体裁等、変動要因がいろいろありすぎます。
>>>僕もサンプルコードレベルで「動く、動かない」といった問題が起きるとまでは思っていませんでしたが、それでもこういうことが起こってしまうのがWebの世界ですね。
>>>
>>>
>>
>


3851 : 小川慶一の回答 (2015-02-15 12:20:12)

匿名 さん:

すいません。伝わってませんでしたか。
Do ... Loop の構造が終った直後です。ループの中だと、まだコンテンツの読込→レンダリングが終了していないので。

回避策のやり方は、どこでひっかかりますか?
上記と同じエラーだから、 Do Loop のところでひっかかっていませんか?

>小川慶一 さん:
>
>おはようございます。
>お忙しい中、すぐにご対応いただきありがとうございます。
>今回は割り切ってしまおうと思います。良い経験をできたと考えます。
>ありがとうございました。
>
>※以下はご参考です。
>DoEvents のあとのところで「Debug.Print objIE.Document.forms(0).OuterHtml」を追加してみました。
>→結論:残念ながら、下記メッセージが表示されました。
>「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」
>※ご参考:実行したコード(該当部分のみ抜粋)
>

 
>    'ページの表示完了待ち
>    Do While objIE.readyState <> 4 Or objIE.Busy = True
>        DoEvents
>        Debug.Print objIE.Document.forms(0).outerhtml
>    Loop
> 

>
>
>「回避策の提案」を実施してみました。
>→結論:残念ながら、下記メッセージが表示されました。
>「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」
>
>>小川慶一 さん:
>>
>>追記です。
>>
>>このWeb連携講座でリクエストとレスポンスの取得方法だけでも3パターン (Microsoft WinHTTP Services, version 5.1, Microsoft XML, Microsoft Internet Controls) 、コンテンツの解析だけでも3パターン(DOM, Microsoft ActiveX Data Objects, Document.forms(0) のようなコレクションでの表現) を提示しているのも「環境によって仕様書どおりに行かないことも多い」ことを考慮してのことです。
>>
>>エクセルのバージョンもそうですが、Windowsのバージョン、使用するライブラリのバージョン、ウェブページの体裁等、変動要因がいろいろありすぎます。
>>僕もサンプルコードレベルで「動く、動かない」といった問題が起きるとまでは思っていませんでしたが、それでもこういうことが起こってしまうのがWebの世界ですね。
>>
>>
>


3849 : 受講生さんのコメント (2015-02-15 10:53:30)

小川慶一 さん:

おはようございます。
お忙しい中、すぐにご対応いただきありがとうございます。
今回は割り切ってしまおうと思います。良い経験をできたと考えます。
ありがとうございました。

※以下はご参考です。
DoEvents のあとのところで「Debug.Print objIE.Document.forms(0).OuterHtml」を追加してみました。
→結論:残念ながら、下記メッセージが表示されました。
「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」
※ご参考:実行したコード(該当部分のみ抜粋)

 
    'ページの表示完了待ち
    Do While objIE.readyState <> 4 Or objIE.Busy = True
        DoEvents
        Debug.Print objIE.Document.forms(0).outerhtml
    Loop
 



「回避策の提案」を実施してみました。
→結論:残念ながら、下記メッセージが表示されました。
「実行時エラー'-2147467259(80004005)'オートメーション エラーです。エラーを特定できません。」

>小川慶一 さん:
>
>追記です。
>
>このWeb連携講座でリクエストとレスポンスの取得方法だけでも3パターン (Microsoft WinHTTP Services, version 5.1, Microsoft XML, Microsoft Internet Controls) 、コンテンツの解析だけでも3パターン(DOM, Microsoft ActiveX Data Objects, Document.forms(0) のようなコレクションでの表現) を提示しているのも「環境によって仕様書どおりに行かないことも多い」ことを考慮してのことです。
>
>エクセルのバージョンもそうですが、Windowsのバージョン、使用するライブラリのバージョン、ウェブページの体裁等、変動要因がいろいろありすぎます。
>僕もサンプルコードレベルで「動く、動かない」といった問題が起きるとまでは思っていませんでしたが、それでもこういうことが起こってしまうのがWebの世界ですね。
>
>


3847 : 小川慶一の回答 (2015-02-15 08:45:57)

小川慶一 さん:

追記です。

このWeb連携講座でリクエストとレスポンスの取得方法だけでも3パターン (Microsoft WinHTTP Services, version 5.1, Microsoft XML, Microsoft Internet Controls) 、コンテンツの解析だけでも3パターン(DOM, Microsoft ActiveX Data Objects, Document.forms(0) のようなコレクションでの表現) を提示しているのも「環境によって仕様書どおりに行かないことも多い」ことを考慮してのことです。

エクセルのバージョンもそうですが、Windowsのバージョン、使用するライブラリのバージョン、ウェブページの体裁等、変動要因がいろいろありすぎます。
僕もサンプルコードレベルで「動く、動かない」といった問題が起きるとまでは思っていませんでしたが、それでもこういうことが起こってしまうのがWebの世界ですね。


3846 : 小川慶一の回答 (2015-02-15 08:28:08)

匿名 さん:

なんかダメっぽいですね。理由はちょっと分かりません。

forms(0) の取得に失敗しているのか、 forms(0) は取得できているけど elements(0) の取得に失敗しているのか?などなども気になるところ。
そこのところをもう少し追求するなら、 DoEvents のあとのところで以下を試してはみたいかな。

Debug.Print objIE.Document.forms(0).OuterHtml


でも、そこまでがんばる必要はないかも。

以下、回避策の提案です。
さいわい getElementsbyTagname は使えるようなので、当該オブジェクトにidがなくても、以下の要領でコーディングすれば同様の結果は得られそうです。
僕の環境では動作確認済ですが、これでどうでしょう? id があればもちろん、 getElementByID で。

    Dim fms As Object
    Set fms = objIE.Document.getElementsbyTagname("form") 'getElementsbyTagnameの戻り値はコレクションなので注意!
    Debug.Print fms(0).OuterHtml
    
    fms(0).getElementsbyTagname("input")(0).Value = "テストその1"
    fms(0).getElementsbyTagname("input")(1).Value = "テストその2"
    fms(0).getElementsbyTagname("input")(2).Click


.Click メソッド使えるのは楽でよいですね。それだけでも、 Microsoft Internet Controls 使った甲斐はあるかと思います。

一般論的なところを言うと、基礎編~発展編1レベルの技術は開発者側もかなり慎重にテストしていますが、外部連携クラスになってくると、実装する技術者の能力にかなり寄っているというか、環境によって仕様書どおりに行かないことも多いです。
どんな技術でも、基本の仕様以外のところでは、「回避策としてこんなことをした」というようなブログ記事やヘルプサイトの記述があちらこちらに転がっているのを見かけるかと思います。

今回は、それに近い経験をしたと思って割り切ってしまうのがよいかと思います。
この割り切りがあると、気が楽ですし、プログラムを配布するとか仕様を説明する、見積もりを出すとかする必要がでたときにも非IT系の人に過剰な期待を抱かせないで済みます。


3845 : 受講生さんのコメント (2015-02-15 07:50:23)

小川慶一 さん:

IEのバージョンは「11.0.9600.17631」です。

[1] エラーの出る行の直前に以下のコードを挿入してきちんと動作するか確かめてみる。
[a] きちんと目的のオブジェクトを取得できているか確かめるため
→結論:下記「[a]」の部分で「実行時エラー'70' 書き込みできません。」が表示され、止まりました。
※ご参考:実行したコード(該当部分のみ抜粋)

		    Debug.Print objIE.Document.GetElementsByTagname("html")(0).outerhtml
		     
		    Debug.Print objIE.Document.forms(0).elements(0).outerhtml	'[a]きちんと目的のオブジェクトを取得できているか確かめるため ←この行で停止。
		    objIE.Document.GetElementById("s_title").Value = "test"	'[b]目的のオブジェクトが書き込み可能なのか確かめるため

		    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"
		    objIE.Document.forms(0).elements(1).Value = "小川慶一"
		


[b] 目的のオブジェクトが書き込み可能なのか確かめるため
→結論:「objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"」の部分で
「実行時エラー'70' 書き込みできません。」が表示され、止まりました。
※ご参考:実行したコード(該当部分のみ抜粋)
		    Debug.Print objIE.Document.GetElementsByTagname("html")(0).outerhtml

		    ’[a]はコメントブロックして、[b]のみ実行
		    ’Debug.Print objIE.Document.forms(0).elements(0).outerhtml	'[a]きちんと目的のオブジェクトを取得できているか確かめるため。
		    objIE.Document.GetElementById("s_title").Value = "test"	'[b]目的のオブジェクトが書き込み可能なのか確かめるため   ←問題なく実行された。

		    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"   '←この行で停止。
		    objIE.Document.forms(0).elements(1).Value = "小川慶一"
		


[2] 同じファイル内のほかのサンプルはきちんと実行できるか確認する。
→下記4件すべて問題なく動きます。
「m05010_get」「m05020_post_id」「m05030_post_collectionindex」「m05040_cookie」

[3] ライブラリへの参照設定を再度行う。
→「objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"」の部分で
「実行時エラー'70' 書き込みできません。」が表示され、止まりました。
[4] Windows Updateを行う
→「objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"」の部分で
「実行時エラー'70' 書き込みできません。」が表示され、止まりました。

現在PCは1台のみしか保有しておりませんので、ほかのPCで動くか
試すことはできない状況です。


>匿名 さん:
>
>そうですか。IEのバージョンは何でしょう?
>
>- - -
>
>同じPC内で試せることとしては、以下があります。
>
>[1] エラーの出る行の直前に以下のコードを挿入してきちんと動作するか確かめてみる。
>
>
Debug.Print objIE.Document.forms(0).elements(0).outerhtml '[a]
>objIE.Document.GetElementById("s_title").Value="test"           '[b]

>
>[a] きちんと目的のオブジェクトを取得できているか確かめるため
>[b] 目的のオブジェクトが書き込み可能なのか確かめるため
>
>[a], [b]の両方ともさくっと動いてしまったらある意味本当に困りますね。。
>
>[2] 同じファイル内のほかのサンプルはきちんと実行できるか確認する。
>そもそものところで、同じファイル内のほかのサンプルはどうですか?
>たとえば、 m05020_post_id は問題なく動きますよね。(たぶんお試し済かと思いますが)
>
>[3] ライブラリへの参照設定を再度行う。
>VBEの [ツール] → [参照設定] から。
>一度関連のライブラリへの参照設定を解除して、エクセルを終了(保存するか?と聞かれたら「はい」)。
>その後エクセル再起動→上記メニューから関連ライブラリへの参照設定をもう一度行う。
>
>[4] Windows Updateを行う
>これら、参照設定しているライブラリが壊れてないか?をチェックすべく。
>
>- - -
>
>あと、ほかのPCであれば動くか?試してみたいところ。
>


3841 : 小川慶一の回答 (2015-02-14 16:56:57)

匿名 さん:

そうですか。IEのバージョンは何でしょう?

- - -

同じPC内で試せることとしては、以下があります。

[1] エラーの出る行の直前に以下のコードを挿入してきちんと動作するか確かめてみる。

Debug.Print objIE.Document.forms(0).elements(0).outerhtml '[a]
objIE.Document.GetElementById("s_title").Value="test"           '[b]


[a] きちんと目的のオブジェクトを取得できているか確かめるため
[b] 目的のオブジェクトが書き込み可能なのか確かめるため

[a], [b]の両方ともさくっと動いてしまったらある意味本当に困りますね。。

[2] 同じファイル内のほかのサンプルはきちんと実行できるか確認する。
そもそものところで、同じファイル内のほかのサンプルはどうですか?
たとえば、 m05020_post_id は問題なく動きますよね。(たぶんお試し済かと思いますが)

[3] ライブラリへの参照設定を再度行う。
VBEの [ツール] → [参照設定] から。
一度関連のライブラリへの参照設定を解除して、エクセルを終了(保存するか?と聞かれたら「はい」)。
その後エクセル再起動→上記メニューから関連ライブラリへの参照設定をもう一度行う。

[4] Windows Updateを行う
これら、参照設定しているライブラリが壊れてないか?をチェックすべく。

- - -

あと、ほかのPCであれば動くか?試してみたいところ。


3838 : 受講生さんのコメント (2015-02-14 14:17:54)

小川慶一 さん:

こんにちは。
PC再起動してみました。
残念ながら、同じことが起こりました。


>匿名 さん:
>
>うーん、それは困りましたね。
>
>PC再起動しても同じことがまた起こりますか?
>
>
>>小川 慶一さん:
>>
>>おはようございます。
>>
>>ご回答いただきありがとうございます。
>>下記アドレスに動画を拝見しましたが、動画のやり方と私のやり方で
>>違う点は特にないと思います。
>>取り急ぎご連絡いたします。
>>
>>
>>>匿名 さん:
>>>
>>>こんばんは。
>>>
>>>ちょっと、再現しませんでした。
>>>以下の動画のとおりの手順でした。匿名さんのやり方と何か違うでしょうか?
>>>https://www.dropbox.com/s/u481btu1wlc5svc/ie_erro70.mp4?dl=0
>>>
>>>
>>>
>>>
>>>
>>>>小川先生
>>>>
>>>>いつもお世話になっております。
>>>>下記部分でマクロ実行中にエラーになってしまいました。
>>>>私のできる範囲で調べてみましたが、わかりませんでしたので、
>>>>質問させていただきます。
>>>>言葉足らずな部分があるかと思いますが、その際はご連絡をお願いいたします。
>>>>ご回答をよろしくお願いいたします。
>>>>
>>>>
>>>>ファイル名 :「05_IE制御してコンテンツを取得」
>>>>標準モジュール :「m05030_post_collectionindex」
>>>>エラー内容 :「実行時エラー'70 書き込みできません。」
>>>>止まってしまった部分:下記コードの部分です。
>>>>

>>>>    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"
>>>>

>>>>
>>>>※補足情報
>>>>バージョン :excel2013
>>>>コード :コードは全く変更を加えておりません。
>>>>    ダウンロードしたファイルのコードをそのまま実行しただけです。
>>>
>>
>


3817 : 小川慶一の回答 (2015-02-13 06:08:17)

匿名 さん:

うーん、それは困りましたね。

PC再起動しても同じことがまた起こりますか?


>小川 慶一さん:
>
>おはようございます。
>
>ご回答いただきありがとうございます。
>下記アドレスに動画を拝見しましたが、動画のやり方と私のやり方で
>違う点は特にないと思います。
>取り急ぎご連絡いたします。
>
>
>>匿名 さん:
>>
>>こんばんは。
>>
>>ちょっと、再現しませんでした。
>>以下の動画のとおりの手順でした。匿名さんのやり方と何か違うでしょうか?
>>https://www.dropbox.com/s/u481btu1wlc5svc/ie_erro70.mp4?dl=0
>>
>>
>>
>>
>>
>>>小川先生
>>>
>>>いつもお世話になっております。
>>>下記部分でマクロ実行中にエラーになってしまいました。
>>>私のできる範囲で調べてみましたが、わかりませんでしたので、
>>>質問させていただきます。
>>>言葉足らずな部分があるかと思いますが、その際はご連絡をお願いいたします。
>>>ご回答をよろしくお願いいたします。
>>>
>>>
>>>ファイル名 :「05_IE制御してコンテンツを取得」
>>>標準モジュール :「m05030_post_collectionindex」
>>>エラー内容 :「実行時エラー'70 書き込みできません。」
>>>止まってしまった部分:下記コードの部分です。
>>>

>>>    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"
>>>

>>>
>>>※補足情報
>>>バージョン :excel2013
>>>コード :コードは全く変更を加えておりません。
>>>    ダウンロードしたファイルのコードをそのまま実行しただけです。
>>
>


3801 : 受講生さんのコメント (2015-02-11 09:48:16)

小川 慶一さん:

おはようございます。

ご回答いただきありがとうございます。
下記アドレスに動画を拝見しましたが、動画のやり方と私のやり方で
違う点は特にないと思います。
取り急ぎご連絡いたします。


>匿名 さん:
>
>こんばんは。
>
>ちょっと、再現しませんでした。
>以下の動画のとおりの手順でした。匿名さんのやり方と何か違うでしょうか?
>https://www.dropbox.com/s/u481btu1wlc5svc/ie_erro70.mp4?dl=0
>
>
>
>
>
>>小川先生
>>
>>いつもお世話になっております。
>>下記部分でマクロ実行中にエラーになってしまいました。
>>私のできる範囲で調べてみましたが、わかりませんでしたので、
>>質問させていただきます。
>>言葉足らずな部分があるかと思いますが、その際はご連絡をお願いいたします。
>>ご回答をよろしくお願いいたします。
>>
>>
>>ファイル名 :「05_IE制御してコンテンツを取得」
>>標準モジュール :「m05030_post_collectionindex」
>>エラー内容 :「実行時エラー'70 書き込みできません。」
>>止まってしまった部分:下記コードの部分です。
>>

>>    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"
>>

>>
>>※補足情報
>>バージョン :excel2013
>>コード :コードは全く変更を加えておりません。
>>    ダウンロードしたファイルのコードをそのまま実行しただけです。
>


3782 : 小川慶一の回答 (2015-02-09 00:16:57)

匿名 さん:

こんばんは。

ちょっと、再現しませんでした。
以下の動画のとおりの手順でした。匿名さんのやり方と何か違うでしょうか?
https://www.dropbox.com/s/u481btu1wlc5svc/ie_erro70.mp4?dl=0





>小川先生
>
>いつもお世話になっております。
>下記部分でマクロ実行中にエラーになってしまいました。
>私のできる範囲で調べてみましたが、わかりませんでしたので、
>質問させていただきます。
>言葉足らずな部分があるかと思いますが、その際はご連絡をお願いいたします。
>ご回答をよろしくお願いいたします。
>
>
>ファイル名 :「05_IE制御してコンテンツを取得」
>標準モジュール :「m05030_post_collectionindex」
>エラー内容 :「実行時エラー'70 書き込みできません。」
>止まってしまった部分:下記コードの部分です。
>

>    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"
>

>
>※補足情報
>バージョン :excel2013
>コード :コードは全く変更を加えておりません。
>    ダウンロードしたファイルのコードをそのまま実行しただけです。


3777 : 受講生さんのコメント (2015-02-08 21:52:34)

小川先生

いつもお世話になっております。
下記部分でマクロ実行中にエラーになってしまいました。
私のできる範囲で調べてみましたが、わかりませんでしたので、
質問させていただきます。
言葉足らずな部分があるかと思いますが、その際はご連絡をお願いいたします。
ご回答をよろしくお願いいたします。


ファイル名 :「05_IE制御してコンテンツを取得」
標準モジュール :「m05030_post_collectionindex」
エラー内容 :「実行時エラー'70 書き込みできません。」
止まってしまった部分:下記コードの部分です。

    objIE.Document.forms(0).elements(0).Value = "Web連携セミナー"


※補足情報
バージョン :excel2013
コード :コードは全く変更を加えておりません。
   ダウンロードしたファイルのコードをそのまま実行しただけです。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 エクセルマクロVBA「Web連携」講座の概要
    【動画1】 エクセルマクロVBA「Web連携」講座の概要 未習得
  2. 【動画2】 エクセルマクロVBA「Web連携」サーバとクライアント
    【動画2】 エクセルマクロVBA「Web連携」サーバとクライアント 未習得
  3. 【動画3】 エクセルマクロVBA「Web連携」ApacheとCGI
    【動画3】 エクセルマクロVBA「Web連携」ApacheとCGI 未習得
  4. 【動画4】 エクセルマクロVBA「Web連携」セッションとポート
    【動画4】 エクセルマクロVBA「Web連携」セッションとポート 未習得
  5. 【動画5】 エクセルマクロVBA「Web連携」クライアントとは
    【動画5】 エクセルマクロVBA「Web連携」クライアントとは 未習得
  6. 【動画6】 エクセルマクロVBA「Web連携」リクエストとレスポンスとは
    【動画6】 エクセルマクロVBA「Web連携」リクエストとレスポンスとは 未習得
  7. 【動画7】 エクセルマクロVBA「Web連携」GETリクエスト
    【動画7】 エクセルマクロVBA「Web連携」GETリクエスト 未習得
  8. 【動画8】 エクセルマクロVBA「Web連携」POSTリクエスト
    【動画8】 エクセルマクロVBA「Web連携」POSTリクエスト 未習得
  9. 【動画9】 エクセルマクロVBA「Web連携」Cookieを使ったリクエスト
    【動画9】 エクセルマクロVBA「Web連携」Cookieを使ったリクエスト 未習得
  10. 【動画10】 エクセルマクロVBA「Web連携」HTMLコンテンツの取得と解析_概要
    【動画10】 エクセルマクロVBA「Web連携」HTMLコンテンツの取得と解析_概要 未習得
  11. 【動画11】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_GETリクエスト
    【動画11】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_GETリクエスト 未習得
  12. 【動画12】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト
    【動画12】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト 未習得
  13. 【動画13】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie
    【動画13】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie 未習得
  14. 【動画14】 エクセルマクロVBA「Web連携」DOM(Document Object Model)を使った解析_概要
    【動画14】 エクセルマクロVBA「Web連携」DOM(Document Object Model)を使った解析_概要 未習得
  15. 【動画15】 エクセルマクロVBA「Web連携」DOMを使った解析_基礎
    【動画15】 エクセルマクロVBA「Web連携」DOMを使った解析_基礎 未習得
  16. 【動画16】 エクセルマクロVBA「Web連携」DOMを使ったサンプル
    【動画16】 エクセルマクロVBA「Web連携」DOMを使ったサンプル 未習得
  17. 【動画17】 エクセルマクロVBA「Web連携」DOM活用のテクニック
    【動画17】 エクセルマクロVBA「Web連携」DOM活用のテクニック 未習得
  18. 【動画18】 エクセルマクロVBA「Web連携」DOMの活用例_メルマガのタイトルを取得
    【動画18】 エクセルマクロVBA「Web連携」DOMの活用例_メルマガのタイトルを取得 未習得
  19. 【動画19】 エクセルマクロVBA「Web連携」DOMの活用例_複数のメルマガ解除を自動化
    【動画19】 エクセルマクロVBA「Web連携」DOMの活用例_複数のメルマガ解除を自動化 未習得
  20. 【動画20】 エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得
    【動画20】 エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得 未習得
  21. 【動画21】 エクセルマクロVBA「Web連携」Microsoft XML_活用例
    【動画21】 エクセルマクロVBA「Web連携」Microsoft XML_活用例 未習得
  22. 【動画22】 エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例
    【動画22】 エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例 未習得
  23. 【動画23】 エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得
    【動画23】 エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得 未習得
  24. 【動画24】 エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得
    【動画24】 エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得 未習得
  25. 【動画25】 エクセルマクロVBA「Web連携」DOMを使ってXMLを解析
    【動画25】 エクセルマクロVBA「Web連携」DOMを使ってXMLを解析 未習得
  26. 【動画26】 エクセルマクロVBA「Web連携」Web連携のよくある問題
    【動画26】 エクセルマクロVBA「Web連携」Web連携のよくある問題 未習得
  27. 【動画27】 エクセルマクロVBA「Web連携」総括
    【動画27】 エクセルマクロVBA「Web連携」総括 未習得
  28. 【動画28】 AJAX通信の解析1: 背景、対応、流れの簡単な説明
    【動画28】 AJAX通信の解析1: 背景、対応、流れの簡単な説明 未習得
  29. 【動画29】 AJAX通信の解析2: 流れと事例の詳細
    【動画29】 AJAX通信の解析2: 流れと事例の詳細 未習得
  30. 【動画30】 クッキーを取得する方法
    【動画30】 クッキーを取得する方法 未習得
  31. 【動画31】 セッションの解析と実装-イントロダクション
    【動画31】 セッションの解析と実装-イントロダクション 未習得
  32. 【動画32】 「セッション」とは?その目的と、ウェブページでの事例
    【動画32】 「セッション」とは?その目的と、ウェブページでの事例 未習得
  33. 【動画33】 セッション解析と実装の落とし穴
    【動画33】  セッション解析と実装の落とし穴 未習得
  34. 【動画34】 セッション解析と実装のサンプルデータ解説
    【動画34】 セッション解析と実装のサンプルデータ解説 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ