Excel VBA質問箱 IV

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

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


13597 / 13644 ツリー ←次へ | 前へ→

【4657】HPからのコピペ conan 03/4/1(火) 13:24 質問
【4670】Re:HPからのコピペ こうちゃん 03/4/1(火) 21:29 回答
【4678】Re:HPからのコピペ こう 03/4/2(水) 13:05 発言
【4686】Re:HPからのコピペ こうちゃん 03/4/3(木) 8:46 発言
【4671】Re:HPからのコピペ Kein 03/4/1(火) 22:03 回答
【4683】Re:HPからのコピペ conan 03/4/2(水) 22:43 お礼

【4657】HPからのコピペ
質問  conan  - 03/4/1(火) 13:24 -

引用なし
パスワード
   いつもお世話になっています。

今回の質問は
1.HP1を開き、”編集”→”すべて選択”を行う。
2.エクセルのA列の一番上のセルをアクティブにし、貼り付ける。
次にHP2を開き、上記と同じ作業を自動的に行う
というコードを書きたいと思っています。
もし御分りの方がいればご教授お願いします。
ちなみにHPは1〜10までとしています。

【4670】Re:HPからのコピペ
回答  こうちゃん E-MAIL  - 03/4/1(火) 21:29 -

引用なし
パスワード
   conanさん、こんにちは

>1.HP1を開き、”編集”→”すべて選択”を行う。
>2.エクセルのA列の一番上のセルをアクティブにし、貼り付ける。
>次にHP2を開き、上記と同じ作業を自動的に行う
>というコードを書きたいと思っています。
>もし御分りの方がいればご教授お願いします。
>ちなみにHPは1〜10までとしています。

IEで開いてエクセルに貼り付けます。
標準モジュールに貼り付けてお試しください。
繰り返しはしていませんので、適宜付け加えてくださいね。

Sub test()
  
  Dim IE As Object 'InternetExplorer用オブジェクト変数

  'IEインスタンス生成
  Set IE = CreateObject("InternetExplorer.Application")

  IE.Visible = True
  
  'HPのページコピー
  With IE
    'URLは実際のものに変更してください
    .Navigate "http://*****/****.htm"
    'チョッと待つ(開くのに十分な時間にしてね)
    Application.Wait (Now + TimeValue("00:00:05"))
    '全選択
    .ExecWB 17, 2, 0, 0
    'コピー
    .ExecWB 12, 2, 0, 0
  End With
  'ワークシートに貼り付け
  Range("A1").Select
  ActiveSheet.Paste
  
  'IE終了
  IE.Quit
  Set IE = Nothing

End Sub

【4671】Re:HPからのコピペ
回答  Kein  - 03/4/1(火) 22:03 -

引用なし
パスワード
   たぶんExcelのバージョンが97以降だと思うので、Webクエリーを使うと良いと
思います。試しにマクロの自動記録をONにして、手作業で取りこんでみて下さい。
出来たコードをUPされたら、それを元にループ処理で10のHPを取りこめるコード
に編集してみますが。

【4678】Re:HPからのコピペ
発言  こう E-MAIL  - 03/4/2(水) 13:05 -

引用なし
パスワード
   # HPってホームページのことだったんですね...

こうちゃんさんのコードの一部補足です。
「5秒待ち→開くまで待つ」
#私も以前この掲示板で教えてもらいました。^_^;

>>1.HP1を開き、”編集”→”すべて選択”を行う。
>>2.エクセルのA列の一番上のセルをアクティブにし、貼り付ける。
>IEで開いてエクセルに貼り付けます。
>  With IE
>    'URLは実際のものに変更してください
>    .Navigate "http://*****/****.htm"

>    'チョッと待つ(開くのに十分な時間にしてね)
>    Application.Wait (Now + TimeValue("00:00:05"))
           ↓  
    While IE.ReadyState <> 4
      Application.Wait (Now + TimeValue("0:00:01"))
     Wend

>    '全選択
>    .ExecWB 17, 2, 0, 0
>    'コピー
>    .ExecWB 12, 2, 0, 0
>  End With

【4683】Re:HPからのコピペ
お礼  conan  - 03/4/2(水) 22:43 -

引用なし
パスワード
   ▼Kein さん、こうさん、こうちゃんさん
ご返答ありがとうございました。
ご返答いただいた内容で試してみます。
また、質問があるときはよろしくお願いします。

【4686】Re:HPからのコピペ
発言  こうちゃん E-MAIL  - 03/4/3(木) 8:46 -

引用なし
パスワード
   こうさん、おひさでした(^^)
フォローありがとうございました。

>こうちゃんさんのコードの一部補足です。
>「5秒待ち→開くまで待つ」
>#私も以前この掲示板で教えてもらいました。^_^;

>     While IE.ReadyState <> 4
>      Application.Wait (Now + TimeValue("0:00:01"))
>     Wend

じつはこのコード、私もここで教えていただいて、実運用で試したのですがうまくいきませんでした。
テキストベースのページはいけそうなのですが、グラフィックが含まれるページではきちんと全選択ができませんでした。
で、実運用ではこの部分は省いて、ページ当たり20秒ほどWaitかけてます。
日に一度、夜中に取ってるので、運用上はあまり問題にならないんですが、1時間おきにとかだったら、難しいですね。
IEオブジェクトは情報が少ないので、「動けばOK」ってとこですが・・・(^^;)

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