プロが教えるわが家の防犯対策術!

会社のドキュメントのデーターベースサイトを閲覧するとき、
量が膨大な為、Ctrl+Fで検索をしていました。

今回、その操作を盛り込んだマクロを作ろうとしていますが、
検索サイトで調べてみても中々ヒットしません。

Excelは2003SP3を使っています。

具体的には、
(1)別のデーターベースからC6のセルにドキュメントの番号を出力
(2)(1)の番号から該当するデーターベースのアドレスを生成
(3)(2)で生成したアドレス先のサイトを開く
以上の(1)~(3)は何とかできました。

問題は以下の(4)~(5)の工程です。
(4)開いたサイト内でCtrl+F
(5)C6のドキュメントの番号を「検索する文字列(N)」の欄に入力
(6)「次を検索(F)」を1回だけクリック


お知恵を貸していただけると大変助かります。
よろしくお願いいたします。

A 回答 (5件)

sub macro1()


application.dialogs(xldialogformulafind).show worksheets("シート名").range("C6").text
end sub

というマクロを実行することで,所定のセルの内容を検索する文字列欄に投入済みの検索ダイアログを表示し,そのまま検索できます。

これに加えて,例えばCtrl+Fのショートカットをこのマクロに取り付ける(ツールのマクロのマクロのオプション)などの手段を併用する事もできます(必要に応じて別途ご相談を投稿してください)が,専用の「検索ボタン」を用意してクリックしてダイアログを表示させるなどの手だての方がお薦めと感じます。

この回答への補足

サイトを開くのはIE6で行っています。

補足日時:2011/04/07 10:40
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
残念ながら上手く出来ませんでした。

調べてみましたが、教えていただいた内容ですと
Excel内の検索になるようです。(違ったらごめんなさい)

私が行いたいのは(3)で開いたサイト内の検索です。

引き続きよろしくお願いいたします。

お礼日時:2011/04/07 10:37

>(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」を探し出すのが今回の目標で今頑張っています。

補足日時:2011/04/08 21:15
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

こちらのコードで「検索」ダイアログは表示できましたが、
文字列の入力、及び「次を検索」が出来ませんでした。

お礼日時:2011/04/11 18:58

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」
で検索したいと考えております。

補足日時:2011/04/11 18:26
    • good
    • 0

≫No.3 この回答への補足


参考になるかもしれないサンプルを示しただけです。
そのままでは上手くいかないのは当然だと思いませんか?
サンプルのような感じで何とかなりそうですか?
補足内容から推測すると方向は合っていると考えてよろしいですか?
方向は合っているなら、実状に合わせて書き換えて試してください。

ピンポイントでの回答には該当部のHTMLソースの提示が必要です。
個人情報等は伏せて提示することはできませんでしょうか。

この回答への補足

ご意見ありがとうございます。
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」を含むドキュメントナンバーを探したいと考えております。

宜しくお願いいたします。

補足日時:2011/04/13 11:11
    • good
    • 0

≫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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A