[[20141119144403]] 『ADO接続でAccessクエリ結果を抽出できない』(hajy) ページの最後に飛ぶ

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

 

『ADO接続でAccessクエリ結果を抽出できない』(hajy)

当方のレベルはAccess初級者(基本的な操作)、
Excelは最近ごく簡単なVBAをいじりだした程度です。

現在Excelマクロを使って「管理sheet」シートI列のセルに
記載した複数のAccessクエリの抽出データをExcelシートに
ワンクリックで出力したいと考えております。

そのため下記のコードを実行しましたが、
データをExcelに出力できたシートもあれば、
逆に全く出力できないシートもありました。
(特段エラーメッセージは無し。
出力できなかったクエリもAccessで手動で実行すれば、
抽出データがあることは確認しました。
また、「管理sheet」シートに記載したクエリ名称はAccessクエリからコピペしております。)

どのようにすれば、すべてのクエリデータを出力できるようになるのでしょうか?
ご教示のほどよろしくお願いいたします。

<使用環境>
OS:windows7 professional 64bit
Microsoft Office:Office2013 32bit
Excel VBA 参照設定:Microsoft ActiveX Data Objects 6.1 Library

<コード>

    Dim rcs As ADODB.Recordset
    Dim cnStr As String
    cnStr = "provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source="  _
    & "C:\Users\*********\データ.mdb"

    Sheets("管理sheet").Select

    Dim i
    For i = 2 To Cells(Rows.Count, 9).End(xlUp).Row

    'データを貼り付けるシート作成
    Worksheets.Add
    ActiveSheet.Name = Sheets("管理sheet").Cells(i, 9)

    Set rcs = New ADODB.Recordset
    rcs.Open Source:=ActiveSheet.Name, ActiveConnection:=cnStr, _
    CursorType:=adOpenStatic, Options:=adCmdTable

    ActiveCell.CopyFromRecordset rcs

    rcs.Close

    Set rcs = Nothing

    Sheets("管理sheet").Select

    Next

以上

< 使用 Excel:Excel2013、使用 OS:Windows7 >


こんにちは

そのAccessクエリはmdb内のテーブルを参照しているのですか?

外部のSQLサーバとかのリンクテーブルは使用していないですか?

(ウッシ) 2014/11/19(水) 15:17


ウッシ様

こんにちは。

すべてのクエリはmdb内のテーブルを参照しており、
外部のSQLサーバ等のリンクテーブルは使っておりません。

いかがでしょうか?

(hajy) 2014/11/19(水) 17:11


 >Set rcs = New ADODB.Recordset
 >   rcs.Open Source:=ActiveSheet.Name, ActiveConnection:=cnStr, _
 >   CursorType:=adOpenStatic, Options:=adCmdTable

 このメソッド、つまり、管理sheetというシートのセルI2から始まる値がクエリ名になっているということですよね!!

 どのクエリが表示されないのか 確認してください。 

 そのクエリ名で表示されるSQLはどんな内容ですか?

 コードを拝見して、 Options:=adCmdTable ちょっとだけこれが気になりますが・・。

   rcs.Open Source:=ActiveSheet.Name, ActiveConnection:=cnStr, _
    CursorType:=adOpenStatic

 これで試してみるとどうなりますか?

(ichinose) 2014/11/20(木) 05:36


こんにちは

後は、

    rcs.Open "SELECT * FROM [" & ActiveSheet.Name & "]", cnStr, adOpenStatic

としてみるとか。

クエリ名が問題かも・・・
(ウッシ) 2014/11/20(木) 08:07


ichinose様

>このメソッド、つまり、管理sheetというシートのセルI2から始まる値がクエリ名になっているということですよね!!

おっしゃる通りです。

出力されないクエリ名で表示されるSQLは、次の通りです。

***********************

SELECT 法基_対象データ.伝票日付, 法基_対象データ.摘要1, 法基_対象データ.貸借金額
FROM 法基_対象データ LEFT JOIN [税区分 from一覧] ON 法基_対象データ. _
税処理コード = [税区分 from一覧].税処理コード
WHERE (((法基_対象データ.摘要1) Like "*配当*") AND ((法基_対象データ. _
科目コード)=9521000))
ORDER BY 法基_対象データ.伝票日付;
SELECT 法基_対象データ.伝票日付, 法基_対象データ.摘要1, 法基_対象データ.貸借金額
FROM 法基_対象データ LEFT JOIN [税区分 from一覧] ON 法基_対象データ.税処理コード = _
 [税区分 from一覧].税処理コード
WHERE (((法基_対象データ.摘要1) Like "*配当*") AND ((法基_対象データ. _
科目コード)=9521000))
ORDER BY 法基_対象データ.伝票日付;

***********************

> rcs.Open Source:=ActiveSheet.Name, ActiveConnection:=cnStr, _
> CursorType:=adOpenStatic

> これで試してみるとどうなりますか?

試してみましたが、変わりありませんでした。

(hajy) 2014/11/20(木) 09:36


ウッシ様

> rcs.Open "SELECT * FROM [" & ActiveSheet.Name & "]", cnStr, adOpenStatic

>としてみるとか。

試してみましたが、変わりありませんでした。

クエリ名は、「法基_法人税等_配当」です。
最初は、もっと長い名称だったのですが、上記のように短縮しても変わりありませんでした。

(hajy) 2014/11/20(木) 09:41


多分関係ないと思うのですが、出力できなかったクエリと出力できたクエリのSQLに
どちらにもLike文は入っていますか?

(ウッシ) 2014/11/20(木) 10:00


 SQL でやる場合は ActiveSheet.Name はクエリ名でなくテーブル名では?

 追記:
 でもそれで状況が変わらないということは、テーブル名とクエリ名が被っている?
(Mook) 2014/11/20(木) 11:37

 >Like文
 これ、ビンゴではないですか?

 ADOでは、ワイルドカードは、%  ですよね?

 クエリのSQLを」ひっぱりだしてきて、* を %に変更して 実行するか

 daoで行うか?

 ですね

(ichinose) 2014/11/20(木) 12:10


こんにちは

これ、ビンゴではないですか?

ichinoseさん、そうですよね。

なんか記憶の片隅にあったような気が・・・

(ウッシ) 2014/11/20(木) 12:24


ウッシ様 ichinose様 Mook様

Like文の「*」を「%」に変えれば、無事にデータ出力できました。
ありがとうございました。
(hajy) 2014/11/20(木) 12:48


 >ADOでは、ワイルドカードは、%  ですよね?

 なんて記述しましたが、

http://office.microsoft.com/ja-jp/access-help/HA001231436.aspx 現在参照不可

 正確には、これです。

 >Like文の「*」を「%」に変えれば、無事にデータ出力できました。 

 これは、mdbファイルのクエリのSQLを*から%に代えたのですか?

  原因が ワイルカードにあるということなんですが・・・・。

 どのようにするかは、ここからです。mdbファイルのクエリを*から%にすれば、

 Excel/VBAからは、作動しますが、逆に アクセスからクエリを実行すれば、作動しません。

 これは、これでよいのか? ということです。

 原因はわかりましたが、では、どうするか? は、よく考えてみてください。

(ichinose) 2014/11/20(木) 17:57


コメント返信:

[ 一覧(最新更新順) ]


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