0

現在、正常に動作している標準データベース接続は 1 つしかありません (メニューまたはツールバー経由)。ただし、3 つの異なる期間のレコードを取得したいと考えています (各シートは異なるクエリを持つことができます)。これを主張する前に、さまざまな試みを行いましたが、マクロを介してレコードを取得できませんでした。私の要件を実装するための提案または指示を探しています。

セル A1 =「名前」。

for,sheet1: testDB から「name」を選択

for,sheet2: data >= abc & date <=xyz の testDB から「name」を選択

for,sheet3: testDB wehre data >= xyx から「name」を選択

4

2 に答える 2

0

ADODB を使用してコードですべてを実行してみてください。

まず、各シートで、セル A1 (おそらく) に新しい名前付き範囲を作成します。

"クエリ" & xsheet.name

そのセルに、そのシートに固有のクエリを入力します

次に、VBA コード モジュールで次のコードを使用します。

sub getData()

dim cn as new adodb.connection
dim rs as new adodb.recordset

dim connStr as string ' connection string
dim sUDLFile as string ' path and name of Microsoft Data Link File (UDL FILE)
dim xSheet as worksheet

connStr="File Name=" & sUDLFile

cn.open connstr

'loop through all the worksheets
for each xSheet in thisworkbook.worksheets

    with rs
        ' open the connection to the db...
        .activeconnection=cn

        'get the query from the range on the worksheet!
        sQry=xsheet.range("Query" & xsheet.name).text

        ' open the query from the DB
        .open sQry

        ' dump the dataset onto the worksheet with one line of code in B5 cell!
        xsheet.range(B5).copyfromrecordset rs
        .close
    end with
next

' clean up and release memory
cn.close
set cn=nothing
set rs=nothing
'
end sub

MS Windows Explorer で接続文字列 (UDL FILE) を作成するには:

  1. ワークブックがあるディレクトリに移動します
  2. 右クリックして [新規...] > [Microsoft データ リンク] を選択します。
  3. 名前を適切なものに変更します (name.udl など)。
  4. 新しいファイルをダブルクリックし、データベースへの接続を作成してテストするように設定します

何か問題があれば、お尋ねください!

フィリップ

于 2013-03-25T15:58:28.190 に答える
0

[開発] タブの [マクロの記録] ボタンを使用して、必要なパラメーターを使用してこのような接続を作成するときに実行するすべてのアクションを記録します。

次に、記録を停止して VBA 画面に移動し、コードがどのように見えるかを見て、好みに合わせて変更するか、この方法で 3 つのバージョンすべてを記録します。

これらの VBA コードを VBA スクリプトに統合します。

于 2013-03-25T12:01:15.723 に答える