- ベストアンサー
Excelから、ファイルの検索機能を使いたい
通常、Windowsキー+Fで表示されるファイルの検索機能ですが、これをExcelのマクロから呼び出す方法があれば教えてください。 現在Excelで簡易なデータベースを構築してまして、このExcelファイルから、MOドライブに格納されているワープロファイル(一太郎)を呼び出す機能を備えたいと思っているのです。 宜しくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じです。 Option Explicit Private Declare Function ShellExecute Lib _ "Shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL = 1 Private Const SW_SHOWMINIMIZED = 2 Private Const SW_SHOWMAXIMIZED = 3 Private Const SW_SHOW = 5 Private Const SW_MINIMIZE = 6 Private Const SW_SHOWMINNOACTIVE = 7 Private Const SW_SHOWNA = 8 Private Const SW_RESTORE = 9 Private Const SW_SHOWDEFAULT = 10 Sub 検索ダイアログを出す() ShellExecute 0, "find", "C:\", vbNullString, vbNullString, SW_SHOWNORMAL End Sub
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
ファイルを検索し開きたいと解釈しましたが、windowsの検索ダイアログを表示する方法はすぐにはわかりませんので、Excelだけでできるよう代替案を考えてみました。 方法.1 Application.GetOpenFileName でファイル名を指定してShell関数で呼び出す。(人間が探します) 方法2. Dir関数で検索し見つかればShell関数で呼び出す。(フルパス指定になります) 方法3. Application.FileSearchで探し、そのうち指定のファイルを実行させる。(ワイルドカードで検索すると複数見つかる場合がある) 質問の趣旨にあっていないかもしれませんが参考にして下さい。
お礼
解答ありがとうございました。教えて頂いた関数ですが、自分にとって使用経験の無い関数が多いので、直ぐに実践する事は難しいのですが、必ず試してみたいと思います。
- ARC
- ベストアンサー率46% (643/1383)
マクロを使ってシート内の検索を行う、ということでいいのでしょうか。 簡単なのは、「マクロの記録」を使うことでしょうか。 [ツール]-[マクロ]-[新しいマクロの記録] で記録を開始します。 で、実際にExcel上で検索を実行しまして、[ツール]-[記録の終了]で終了します。 あとは作成したマクロを適宜編集して、使いやすいように改良していけばいいでしょう。 ヘルプの[マクロを記録する]とか[Find メソッド]とかが役に立つと思います。 以下、コード例です。 Sub Macro1() On Error Resume Next Cells.Find(What:="ABC").Activate If Err = 0 Then MsgBox "'ABC'を発見しました。" Else MsgBox "'ABC'を発見できませんでした。" Err.Clear End If End Sub
お礼
早速の解答、ありがとうございました。 私の文章が悪かったのですが、シート外のファイル検索が 今回の質問趣旨でした。 しかし、シート内検索も充分に必要な機能かと思いますので、実践して自分のモノにしたいと思います。
お礼
解答ありがとうございました。これ、私の質問趣旨にドンピシャでした。コピーペーストのみで実現出来たので大変助かりました。 ただ、私の様な初心者ではこのソースの内容はチンプンカンプンでして、検索の「名前」欄に情報を組み込んだ状態で表示させたり、更には一歩進んだ状態で検索結果の表示を行った後の状態で表示させたいとも考えたのですが、何処をどのように触れば良いのか・・・(^^;)。 難しいですね、プログラムって。