三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

VBA IE操作 サイトを全選択してEXCELシートへコピーアンドペーストにチャレンジ

VBA IE操作 サイトを全選択してEXCELシートへコピーアンドペーストにチャレンジ

VBA IE操作の質問 が 来たので、
昔のサンプルを引っ張り出してテストしてみます。

>最悪、サイトを全選択してEXCELシートへコピーアンドペーストしてから、
>シートからの必要情報抽出を行い、整えたファイルを
>新規エクセルファイルとして出力するプログラムに変更しようとも
>考えてるのですが、
>こちらのやり方はVBAで実現可能ですか?

サイトを全選択してEXCELシートへコピーアンドペーストにチャレンジ
単純にコピーすると怒られそうだけど、

IEを起動 Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
ページを表示 objIE.navigate "URL文字列" '文字列でURLを渡す
全選択(CTRL+A) objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択
コピー(CTRL+C) objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー

'Excelに貼り付け
Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML"

そんな感じで単純に書いてみました。

http://ie.vba-ken3.jp/Methods/ExecWB/ を 参考にして

Sub ie_test_014()  'IE メニューのコマンドをテスト
'全て選択とコピーをIE上で行ない、Excelの新規ブックに貼り付けてみた。

    Dim strURL As String  'URL入力用
    strURL = InputBox("URLを指定", "URL入力", "http://www.ken3.org/cgi-bin/test/test028-2.asp")

    Dim objIE   As Object  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)
    
    'IE 画面サイズの調整(表示場所とサイズ)
    objIE.FullScreen = False '= Trueで最大化します。
    objIE.Top = 200    '左上 Y 表示場所の指定
    objIE.Left = 100   '左上 X
    objIE.Width = 800  '横の幅
    objIE.Height = 600 '縦の高さ
    
    '指定したページを表示
    objIE.navigate strURL   '文字列でURLを渡す

    '表示完了を待つ .readyState と .Busy を見る
    While objIE.readyState <> 4 Or objIE.Busy = True 'IEがBusyの間 待つ
        DoEvents
    Wend
    DoEvents

    'テスト用に新規のブックを追加する
    Workbooks.Add  '新規ブックを追加
    
    '形式を選択して貼り付け Unicode テキスト貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "FormatUnicode テキスト"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="Unicode テキスト"

    '形式を選択して貼り付け テキスト貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "Formatテキスト"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="テキスト"

    '形式を選択して貼り付け HTML貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "FormatHTML"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="HTML"

    '終了処理 テストの時は、↓確認して、残しておくと便利ですよ。
    If MsgBox("IEを閉じますか?", vbYesNo) = vbYes Then '終了確認
        objIE.Quit  '.Quitで閉じる
    End If
    
    '使用したオブジェクト変数もキレイにしてね。
    Set objIE = Nothing

End Sub

www.youtube.com
http://www.youtube.com/watch?v=_JrmoeKxfkM&fmt=18

↑テストで三種類貼り付けていますが、使うのは(使えるのは)
ActiveSheet.PasteSpecial Format:="HTML"
の貼り付けかなぁ?

下記、シートを追加してますが、
'形式を選択して貼り付け HTML貼り付けのテスト
objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択
objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー
Sheets.Add 'テスト用のシートを新規追加する
ActiveSheet.Name = "FormatHTML" 'シートに名前を付ける
Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML"

データの形がいつも同じ形なら A10とか指定して、10行目から貼るなど アレンジしてみてください。
'形式を選択して貼り付け HTML貼り付けのテスト
objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択
objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー
'前のデータを消してからセットの方が、ほんとはキレイかなぁ?
Range("A10").Select '10行目にセット
ActiveSheet.PasteSpecial Format:="HTML"
↑みたいに、4行で指定位置に貼れると思います。

あとは、Excelの世界なので、お好きなように料理してみてください。

何かの参考となれば、幸いです。 三流プログラマー Ken3

グループキーワード: http://ken3hitori.g.hatena.ne.jp/keyword/.ExecWB

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)