VBAのMatch関数を使って、他ブックのセルを参照して条件に合うデータがあればTrueを、なければFalseを返す関数を作っています。Match関数は、Workbooks.openで他ブックを開かなければ参照できないのでしょうか?
調べてみると、VBAでなくExcelでの方法(Index関数と組み合わせる)しか出てきませんでした。
3行目を消すと、インデックスの有効範囲のエラーが出ます。
よろしくお願いします。
Function IsContained(target, Filename) As Boolean path = Sheet_path(c) Set open_file = Workbooks.Open(Filename:=path & "\" & Filename, UpdateLinks:=False) On Error Resume Next num = WorksheetFunction.Match("テスト", Workbooks(Filename).Worksheets("シート").Range("CC10:CC900"), 0) On Error GoTo 0 If num = 0 Then kekka = False Else kekka = True End If Workbooks(Filename).Close End Function
参照するのは他のブックなのに、他のブックを開かないで参照したいんでしょうか?(意味が分からない日本語になっているんですが、そうしたいと読めるのですが。)
そういうことです。
ExecuteExcel4Macroはファイルを開かずに参照できますよね。
Match関数でもファイルを開かずに参照する方法は存在するかということです。
「ExecuteExcel4Macro」について教えていただいてありがとうございます。
では、VBAのQueryTableオブジェクト、もしくはADOで接続して、取得した値をMatch関数で処理する、というのはいかがでしょうか。
動作確認はまだやってませんが、
MATCHはExcel関数なので
ExecuteExcel4Macroで使える可能性はあります。
他に回答される方がいないようでしたら調べてみます。
開くのが簡単なら開けばいいんじゃないかと思いますが。どのみちデータを読み込まなければいけないので内部では開いています。表示されるのがいやなら非表示にしたらいいと思います。
