[[20090807164841]] 『リストボックスに入力した数字をトリガーに、その』(けい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックスに入力した数字をトリガーに、その数字に該当するファイルを開くには』(けい)

すみません。
緊急でどなたか教えていただけませんでしょうか。
困っています。

  A      B       C

 1 0254  ファイル名1
 2 0546  ファイル名2
 3 7831  ファイル名3
 4 7652  ファイル名4
 5 4655  ファイル名5

いま現在、コンボボックスでB列のファイル名に合致する場合のみ、エクセルファイルを自動的に開くマクロになっています。

上記方法プラス下記の検索方法も追加できるでしょうか?
A列にある数字をList Boxに入力し、 Private Sub CommandButton1_Click()をクリックすると、
そのA列の数字に対応するBのエクセルファイルの名前に合致するファイルを自動的に開く方法をです。
Private Sub CommandButton1_Click()の構文はどうなりますでしょうか?

 'ボタンが押されたら、ComboBox2の値で このマクロが書いてあるBookのフォルダ内をサブフォルダも含めて検索する
 '見つかれば そのBookを Openする
 Private Sub CommandButton1_Click()
    Dim ok As Long
    Dim myRootPath As String   '検索を開始するRootフォルダ  (時間はかかるが ドライブ(D:\)などでもよい )
    Dim myFind As String
    Dim myBook As String * 513
    If ComboBox2.ListIndex > -1 Then
        myRootPath = ThisWorkbook.Path & "\"
        myFind = ComboBox2.Value & ".xls"
        ok = SearchTreeForFile(myRootPath, myFind, myBook)
        If ok Then
            myFind = Left$(myBook, InStr(myBook, vbNullChar) - 1)
            Workbooks.Open myFind
        Else
            MsgBox "見つかりませんでした"
        End If
    End If
 End Sub

すみませんが宜しくおねがい致します。


 SearchTreeForFileって、APIですか?だとしたら、宣言部も提示してください。

 そうでないなら、そのコードも提示してください。
 APIだとして・・・・、

 リストボックスをListbox1というオブジェクト名だとすると・・・、

 当該ユーザーフォームのモジュールに

 '==============================================
 Option Explicit
 Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _
    (ByVal RootPath As String, ByVal InputPathName As String, _
     ByVal OutputPathBuffer As String) As Long
 '================================================================
 Private Sub UserForm_Initialize()
    Dim rng As Range
    With ThisWorkbook.Worksheets("sheet1") 'Sheet1に提示されたようなデータがあるとして・・・、
       Set rng = .Range("a1", .Cells(.Rows.Count, "a").End(xlUp)).Resize(, 2)
    End With
    If rng.Cells(1).Value <> "" Then
       With ListBox1
          .List() = rng.Value
       End With
    End If

 End Sub
 '=========================================================================
 Private Sub CommandButton1_Click()
    Dim ok As Long
    Dim myRootPath As String   '検索を開始するRootフォルダ  (時間はかかるが ドライブ(D:\)などでもよい )
    Dim myFind As String
    Dim myBook As String * 513
    If ListBox1.ListIndex > -1 Then
        myRootPath = ThisWorkbook.Path & "\"
        With ListBox1
           myFind = .List(.ListIndex, 1) & ".xls"
        End With
        ok = SearchTreeForFile(myRootPath, myFind, myBook)
        If ok Then
            myFind = Left$(myBook, InStr(myBook, vbNullChar) - 1)
            On Error Resume Next
            Workbooks.Open myFind  'ファイルI/Oの場合は、必ず、エラートラップを行なうこと
            If Err.Number <> 0 Then MsgBox Err.Description
            On Error GoTo 0
        Else
            MsgBox "見つかりませんでした"
        End If
    End If
 End Sub

 ichinose 

 > SearchTreeForFileって、APIですか

 SearchTreeForFileは、以下を参考にされたのかな?
[[20090805145721]]?『コマンドボタンでファイルを探しにいくには』(そい)

 (とおりすがり)

 >参考にされた
 と言うか、続きっぽいですね。

 (HANA)

 とおりすがりさん
 誠に勝手ながら、リンクにタイトルを貼り付けさせて頂きました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.