10代と話して驚いたこと

Access2007からADO接続してEXCELのシートにSELECT文を発行すると、
『[Microsoft][ODBC Excel Driver]選択された CollatingSequence は OS でサポートされていません。』のエラーが出ます。

SELECT文に条件を付けると上記エラーが発生します、条件なしの場合はエラーが発生しません。

エラーが発生してもデバッグで F8 で実行すると正常に条件付きでSELECTされます、
エラーは一回目のSELECTだけで、以降はエラーが発生しません。

対処の方法をお教え下さい。
よろしくお願いします。

(("Microsoft.Jet.OLEDB.4.0"を使用してもエラーが発生しました。))

(例)
'テンポラリファイルを取り込む
Dim querydef As DAO.querydef

Dim adoCON As New ADODB.Connection
Dim adoRS As New ADODB.Recordset

Dim strV As String
Dim strQ As String

'ADOを使い読み込み専用モードでExcelファイルを扱う準備(オープン)をします
adoCON.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; " & _
"DBQ=" & "C:\test2014.xlsx" & ";" & _
"ReadOnly=True"

'SQLを実行(全件検索)   OK
Set adoRS = adoCON.Execute("SELECT * FROM [Shite1$]")

'SQLを実行(条件付き検索) NGエラーが発生します。
Set adoRS = adoCON.Execute("SELECT * FROM [Shite1$] WHERE A = 7 ")

A 回答 (1件)

当方Office2010ですが同じ結果になりました。


ちょっとバグっぽいですね。
https://support.microsoft.com/kb/257819/JA


ある特定のバージョンの MDAC を使用する Visual Basic デザイン環境で、プログラムがデザイン時に初めて Excel データ ソースに接続する際に次のエラー メッセージが表示されることがあります。
選択された CollatingSequence は OS でサポートされていません。』
とあって、そのリンク先の
https://support.microsoft.com/kb/246167

Visual Basic の場合の説明がありますが、VBA に関しては何もないです。。。

ODBC ではなくOLEDB だと当方ではスムースに行きました。

Sub qXL()
Dim cnXL As ADODB.Connection
Dim rsXL As ADODB.Recordset
Dim cn As ADODB.Connection

Set cnXL = New ADODB.Connection

With cnXL
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source= C:\test2014.xlsx" & _
"; Extended Properties=""Excel 12.0; HDR=YES;"""
.Open
End With

Set rsXL = New ADODB.Recordset
rsXL.Open "SELECT * FROM [Sheet1$] WHERE A = 7 ", cnXL, adOpenStatic
msgbox rsXL!A

rsXL.Close: Set rsXL = Nothing
cnXL.Close: Set cnXL = Nothing
End Sub

エクセルの1行目がタイトル行としています。(HDR=YES)
なので A フィールドから、7 を抽出条件です。
    • good
    • 0
この回答へのお礼

今回は、有難うございました。

On Error GoTo で対処しようと思いましたがなにかスッキリとせず色々試してみました。
回答頂いた方法を試して成功しました、スッキリしました。

有難うございました。

お礼日時:2014/02/04 09:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報