1

現在、workbook1 に大きなテーブルのデータ ソースがあります。現在空のワークブック 2 からワークブック 1 への DSN 接続をセットアップして、ワークブック 2 からクエリできるようにします。

SQL クエリの結果に、ユーザー定義の VBA 関数を使用して計算された追加の列を表示したいと考えています。その引数は、データ ソースの他のフィールドになります。

例:

Workbook1 は Field1、F2、F3、および F4 です。これをクエリしてすべてのレコードを表示したいのですが、さらにF5=UDF(F3,F4).

これに対する解決策は次のとおりであるとすでにアドバイスされています。

SELECT UDF(F3,F4) as F5 
FROM \SourceWorkBookLocation\SourceWorkBook

アクセス中: アクセスで発生している問題は、現在リストの一番上にあるわけではなく、データ型に関連しており、文字列内の数値が 25 未満かどうかを判断しようとしています。しかし、主な問題は MS Query にあります。

Excel/MS クエリ:

関数が認識されないだけです。「未定義関数」関数を表示する方法がわかりませんか? ここでの私の最終目標は、Excel でフロント エンドを構築し、クエリに渡されたユーザー入力変数を使用して適切に vba クエリを実行することです。クエリは、個別に更新されたワークブックで実行されます。

MS Query に私の UDF を見てもらい、私がやっていることを受け入れる方法についてのアイデアはありますか? ドライバーの問題でしょうか?選択できるさまざまな Excel ドライバーがあります。

ありがとう

4

1 に答える 1

0

あなたが提供した情報を見ると、2 つの Excel ワークブックをテーブルとして使用して、Excel VBA UDF を使用してクエリを実行しようとしました。ここで、これらのワークブックをテーブルとして使用すると仮定しますが、MS Access で使用します。

ほとんどすべてのデータベースが読み取り可能standard SQLです。各データベースが独自のスペースに書き込む関数を処理できることを確認してください。あなたの場合、Access VBA で UDF を記述してください。次に、同じように実行してみてください。

これは、Excel から MS Access の UDF にアクセスしようとしたり、その逆の場合に直面することがある一般的な問題です。簡単に言えば、MS Access を実行している場合、クエリは VBA にコールバックできます。しかし、ODBCまたはを実行しているときADOは、JET エンジンは単に実行されていないため、VBA モデル全体を利用することはできません。

次のようなことを試みることができます。

Dim objExcl As Object     
Set objExcl = CreateObject("Excel.Application")     
objExcl.OpenCurrentDatabase "ExcelFileName/Path"     
objExcl.Run ("UDFName")    
objExcl.CloseCurrentDatabase     
Set objExcl = Nothing

率直に言って、UDF を Access に移動することを好みます。

参考文献:

于 2013-02-02T08:49:14.627 に答える