- 締切済み
ExcelのマクロでIEのCtrl+Fの検索
会社のドキュメントのデーターベースサイトを閲覧するとき、 量が膨大な為、Ctrl+Fで検索をしていました。 今回、その操作を盛り込んだマクロを作ろうとしていますが、 検索サイトで調べてみても中々ヒットしません。 Excelは2003SP3を使っています。 具体的には、 (1)別のデーターベースからC6のセルにドキュメントの番号を出力 (2)(1)の番号から該当するデーターベースのアドレスを生成 (3)(2)で生成したアドレス先のサイトを開く 以上の(1)~(3)は何とかできました。 問題は以下の(4)~(5)の工程です。 (4)開いたサイト内でCtrl+F (5)C6のドキュメントの番号を「検索する文字列(N)」の欄に入力 (6)「次を検索(F)」を1回だけクリック お知恵を貸していただけると大変助かります。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
≫No.4 この回答への補足 ><td nowrap width="200px">111-222-333-444-abcde</a></td>←ドキュメントナンバーを含む文字列 この行の記述は間違ってないですか? 取りあえずtrタグで探るなら下記のような感じでいけると思います。 探し出してあと何をするか解らないのでaタグのリンクを書き出しようにしています。 Dim tmp1 As Object Dim tmp2 As Object For Each tmp1 In .all.tags("tr") If tmp1.all.tags("td")(0).innerText Like "111-222-333-444*" Then For Each tmp2 In tmp1.all.tags("a") Debug.Print tmp2.href Next Exit For End If Next
- xls88
- ベストアンサー率56% (669/1189)
≫No.3 この回答への補足 参考になるかもしれないサンプルを示しただけです。 そのままでは上手くいかないのは当然だと思いませんか? サンプルのような感じで何とかなりそうですか? 補足内容から推測すると方向は合っていると考えてよろしいですか? 方向は合っているなら、実状に合わせて書き換えて試してください。 ピンポイントでの回答には該当部のHTMLソースの提示が必要です。 個人情報等は伏せて提示することはできませんでしょうか。
- xls88
- ベストアンサー率56% (669/1189)
Webサイトと勘違いしていました。 私は会社内のデータベースサイトなるものを扱ったことがないので良く解りません。 Webサイトと会社内のデータベースサイトは同じ構造と考えて良いのでしょうか? 意図する処と合致しているかどうか解りませんがWebサイトの例を挙げてみます。 JRAサイトマップのページ http://www.jra.go.jp/sitemap/index.html から「競馬メニュー」内のリンクを取ってみます。 HTMLソースをみると Tableタグのsタブに見出しと見出し毎のリンクがあります。 Tableタグを総当たりして 最初のaタグで見出しの「競馬メニュー」を見つけ 「競馬メニュー」が見つかったTableタグ内のaタグを総当たりでリンクを書き出します。 (ただしonclickが有る場合はその部分が取れていません) Dim tmp1 As Object Dim tmp2 As Object With objIE.document For Each tmp1 In .all.tags("table") 'Tableタグを総当たり If tmp1.all.tags("a")(0).innerText = "競馬メニュー" Then '競馬メニュー For Each tmp2 In tmp1.all.tags("a") 'aタグを総当たり Debug.Print tmp2.innerText & vbLf & tmp2.href Next Exit For End If Next End With
補足
回答ありがとうございます。 リンクの部分は全て同じ画像ですので、 aタグで検索は出来ませんでした。 検索したい部分はリンクの張られていないテキスト部分です。 また説明不足だったようで申し訳ありません。 下の補足を引用しますと、 111-222-333-444 [リンク1] [リンク2] [リンク3] のリンク部分は全て画像が張られています。 テキスト部分の「111-222-333-444」 で検索したいと考えております。
- xls88
- ベストアンサー率56% (669/1189)
>(4)開いたサイト内でCtrl+F 取りあえず(4)のみですが下記ページを参考に 「検索」ダイアログを出すことができました。 ≪参考≫ IE 操作 .ExecWB でコマンド実行(検索したかったけど) http://www.ken3.org/vba/backno/vba112.html 上記ページでは 'IEのメニューコマンドを実行する(42番のコマンド) objIE.ExecWB OLECMDID_SHOWFIND, OLECMDEXECOPT_DODEFAULT で失敗となっていますが 32番目のコマンド objIE.ExecWB OLECMDID_FIND, OLECMDEXECOPT_DODEFAULT で成功しました。 IE7です。 #余談ですが どういったニーズで「検索」ダイアログを表示されるのですか? サイトのデータを「検索」ダイアログに頼らずに探ることは可能です。
お礼
回答ありがとうございます。 こちらのコードで「検索」ダイアログは表示できましたが、 文字列の入力、及び「次を検索」が出来ませんでした。
補足
回答ありがとうございます。 家からではアクセスできないサイトですので週明けまで 試せないのが残念です。 もっと簡単な方法があるのであればうれしいです。 普段サイト内の検索をCtrl+Fで行っていますので、発想がありませんでした。 ニーズの補足をします。 欲しいドキュメントが「111-222-333-444」だったとします。 サイト内は「111-222-000-000」から[111-222-999-999」までリストになっています。 その番号の右にリンクが3つあり、それぞれに必要なドキュメントが保存されています。 構成のイメージは以下の感じです。 「111-222関連のページ」 111-222-000-000 [リンク1] [リンク2] [リンク3] 111-222-000-001 [リンク1] [リンク2] [リンク3] ・ ・ ・ 111-222-999-999 [リンク1] [リンク2] [リンク3] [TOP] この中から「111-222-333-444」を探し出すのが今回の目標で今頑張っています。
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() application.dialogs(xldialogformulafind).show worksheets("シート名").range("C6").text end sub というマクロを実行することで,所定のセルの内容を検索する文字列欄に投入済みの検索ダイアログを表示し,そのまま検索できます。 これに加えて,例えばCtrl+Fのショートカットをこのマクロに取り付ける(ツールのマクロのマクロのオプション)などの手段を併用する事もできます(必要に応じて別途ご相談を投稿してください)が,専用の「検索ボタン」を用意してクリックしてダイアログを表示させるなどの手だての方がお薦めと感じます。
お礼
早速の回答ありがとうございます。 残念ながら上手く出来ませんでした。 調べてみましたが、教えていただいた内容ですと Excel内の検索になるようです。(違ったらごめんなさい) 私が行いたいのは(3)で開いたサイト内の検索です。 引き続きよろしくお願いいたします。
補足
サイトを開くのはIE6で行っています。
補足
ご意見ありがとうございます。 No.3で頂いた回答に対してご報告する前に、 入力やクリックをどうすれば良いのか探してみましたが、 出来ませんでしたので結果のみをご報告いたしました。 該当部分のソースは以下の通りです。 <tr> <td nowrap width="200px">111-222-333-444-abcde</a></td>←ドキュメントナンバーを含む文字列 <td nowrap width="400px">ドキュメントの名前</td> <td><a href="リンク1"><img src="○○.gif" /></a></td> <td><a href="リンク2"><img src="○○.gif" /></a></td> <td><a href="リンク3"><img src="○○.gif" /></a></td>←リンク1~3の画像ファイルは同じもの </tr> これと同じソースが並んでおり、 その中の「111-222-333-444」を含むドキュメントナンバーを探したいと考えております。 宜しくお願いいたします。