ken3memo (三流君)

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




[記事一覧、バックナンバーを見る]

2009-12-27

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

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

VBA IE操作の質問 が 来たので、

昔のサンプルを引っ張り出してテストしてみます。

実際のテストファイルは

http://ie.vba-ken3.jp/test/Excel2003_IE8_OS_XP_SP3.zip

に保存してあります、テストで使ってみてください。

>最悪、サイトを全選択して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

D

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

vvvv 2016/04/02 14:12 すべて選択しても すべて抜き取れない時がありますか?

ken3memoken3memo 2016/04/02 19:41 抜けないページがあると思いますが、参考になる例題 NG ページが見つからなかった。
ctrl a や cを javascriptなどでつぶしているページもあると思うので。

ken3memoken3memo 2016/04/02 19:41 あると思います

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ken3memo/20091227/1261925747




[記事一覧、バックナンバーを見る]








ブログトップ 記事一覧 ログイン 無料ブログ開設