Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
VBAでIE操作を行った場合
投稿日時: 20/07/10 19:06:43
投稿者: ひっちん1

お世話になっております
  
VBAでIE操作を行った場合
問題なく処理するパソコンと処理しないパソコンがあります
  
原因がわからないので、ご教授お願い申し上げます
  
(初心者に毛が生えた程度の知識しかありませんのでよろしくご指導ください)
  
    Sheets("●●").Select
  Range("A1").Select
    Dim myIe As Object
      
     Set myIe = CreateObject("InternetExplorer.application") 'ウインドーズ10 前に使用
              
    With myIe
        .Navigate "http://WWW/WWW_・・・・・・・
           
        Do While .Busy
        Loop
        Do Until .readyState = 4
        Loop
        .ExecWB 17, 0
        .ExecWB 12, 0
 
        'ActiveSheet.PasteSpecial Format:="テキスト"
        'ActiveSheet.PasteSpecial Format:="HTML Format"
          
         ActiveSheet.Paste
        'コマンドボタン削除
         ActiveSheet.DrawingObjects.Delete
          
                
        .Quit
    End With
  
  
問題症状の現象は、 新しいWEBページが開いてマクロが止まります
  
今までは、WEBページは開かず、ページ内の情報をすべてコピー後
指定セルにすべての貼付けを行っていました。
  
*なぜか?
 この処理が問題なくできるパソコンとできないパソコンがあります
 ツール内の 参照設定はできるパソコンとできないパソコンは同じとなっています
  
  
以前にも、同じ症状が出たので、ネットで調べて下記の式の部分を変更したら
問題なく処理ができましたが、今回はどちらを使ってもできない、パソコンは処理が止まります。
  
  Set myIe = New InternetExplorerMedium 'ウインドーズ10にパソコン変更時に修正
      
  Set myIe = CreateObject("InternetExplorer.application") 'ウインドーズ10 前に使用
  
  
説明が下手ですがよろしくお願いします
 

回答
投稿日時: 20/07/10 21:49:47
投稿者: takesi

下記サイト参考に。。

引用:
VBA IE操作 サイトを全選択してEXCELシートへコピーアンドペーストにチャレンジ
https://ken3memo.hatenablog.com/entry/20091227/1261925747

当方確認(win10、64bit:office365(16.0.)64bit)
 
 
VBA CreateObject関数と参照設定の違い
https://e-vba.com/ole/

投稿日時: 20/07/10 23:29:21
投稿者: ひっちん1

 
投稿者: takesiさん
ご回答ありがとうございます
 
申し訳ございませんが
なにぶん、マクロ知識が不足していますので
もう少し、咀嚼してご説明いただけないでしょうか?
 
 
下記式はマクロ記録で行い、
途中から動かなくなるパソコンで試したたら
問題なく動きました・・・・?
(最初質問した式より、コピー貼り付けで、位置が若干ずれていましたが)
 
なぜなのか?教えていただけないでしょうか
 
 
Sub Macro2()
'
' Macro2 Macro
'
 
'http://・・・・・
        "URL;http://・・・・", Destination:= _
        Range("$A$1"))
         
        .WebSelectionType = xlEntirePage
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
また、最初に質問した式をどのように修正したら、マクロ記録で問題なく動くようになるか
ご指導お願いします。
 
 
 
 

投稿日時: 20/07/11 00:01:44
投稿者: ひっちん1

投稿者: takesiさん
ご回答ありがとうございます
  
申し訳ございませんが
なにぶん、マクロ知識が不足していますので
もう少し、咀嚼してご説明いただけないでしょうか?
  
  
下記式はマクロ記録で行い、
途中から動かなくなるパソコンで試したたら
問題なく動きました・・・・?
(最初質問した式より、コピー貼り付けで、位置が若干ずれていましたが)
  
なぜなのか?教えていただけないでしょうか
  
  
Sub Macro2()
 
 Macro2 Macro
 
  With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://・・・・", Destination:= _
        Range("$A$1"))
          
        .WebSelectionType = xlEntirePage
        .Refresh BackgroundQuery:=False
    End With
End Sub
  
また、最初に質問した式をどのように修正したら、マクロ記録で問題なく動くようになるか
ご指導お願いします。

回答
投稿日時: 20/07/11 00:32:10
投稿者: takesi

どちらのエクセルでも動くのなら、エラーのないプログラム
だとお思いますが?
 
まず
https://ken3memo.hatenablog.com/entry/20091227/1261925747
様のところのプログラムをコピペして、URLを希望のものに書き換えて実行してみて、、、
 
後は不要なところを削除するなりして、目的に近づけていきませんか。

投稿日時: 20/07/11 02:07:42
投稿者: ひっちん1

投稿者: takesiさん
ありがとうございます
 
どちらのエクセルでも動くのなら、エラーのないプログラム
だとお思いますが?
 
おっしゃる通りです
 
マクロ記録で行った式の場合は、どのパソコン(2台ですが)でも動きました
※新しいWEBページは開かず、ページ内の情報をすべてコピー後
シートに貼付けが出来ました。
 
ですが・・・
ご教授いただきました
https://ken3memo.hatenablog.com/entry/20091227/1261925747
様のところのプログラムをコピペして、URLを希望のものに書き換えて実行を行っても
 
やはり、 新しいWEBページが開いてマクロが止まります
   
なぜなのか?・・・・
 
マクロ自動記録の式に変更した場合、
完全にページが表示されるまで待機する等の処理はカバーできているのでしょうか?
問題が発生しないのでしょうか?
 
申し訳ございませんがご指導お願いします。
 
 
 
 

回答
投稿日時: 20/07/11 06:18:25
投稿者: simple

横から失礼します。
 
> マクロ自動記録の式に変更した場合、
> 完全にページが表示されるまで待機する等の処理はカバーできているのでしょうか?
> 問題が発生しないのでしょうか?

それはいわゆるWebクエリーというもので、ご心配のムキはExcel君がすべてカバーしてくれています。
ユーザーが心配する必要はないですし、逆に途中であれこれ相の手をいれたくてもできません。
すべてExcel君にお任せするしか手段が無いという性格のツールです。
結果が得られているなら、Webクエリーが一番簡単かつ安定して使えるものです。
 
単に、データを取得するだけ(別のページにジャンプするとか、入力するとかいったことはしない)
であれば、それを使うことで十分と思います。
あえて、IEを自前で操作する必要は無いと思います。
 
# なお、当初の質問に関連して、あえてコメントすれば、
# 下記の記事が参考になるかもしれません。
# https://qiita.com/3mc/items/da045e86d25ef697ec43
# いずれにせよ、色々な要因があるようで、
# われわれ素人に全容解明できるような話ではなさそうな印象です。

投稿日時: 20/07/11 09:25:01
投稿者: ひっちん1

投稿者: takesiさん
ありがとうございました
助かりました
 
 
 
投稿者: simple
ご回答ありがとうございます
親切に説明していただきありがとうございます
 
下記の、咀嚼していただいたコメントは大変助かります
難しいマクロを少しはわかることができました
 
ご指導、本当にありがとうございました。
 
 
  
Webクエリーというもので、ご心配のムキはExcel君がすべてカバーしてくれています。
ユーザーが心配する必要はないですし、逆に途中であれこれ相の手をいれたくてもできません。
すべてExcel君にお任せするしか手段が無いという性格のツールです。
結果が得られているなら、Webクエリーが一番簡単かつ安定して使えるものです。
  
単に、データを取得するだけ(別のページにジャンプするとか、入力するとかいったことはしない)
であれば、それを使うことで十分と思います。
あえて、IEを自前で操作する必要は無いと思います。