
オラクルサーバーよりExcelにDataを抽出するマクロを作成しましたが、抽出条件の部分で日付指定を行う部分で変数を使うと「Refresh BackgroundQuery:=False」の部分で以下のエラーが発生します。
『実行時エラー'1004':一般ODBCエラー』
変数を使用しない場合には問題なくDataの抽出が可能なのですが、変数の書き方に問題があるのでしょうか?
お手数をお掛け致しますが、どなたかご教授頂けませんでしょうか?
ちなみに以下が内容です。
※サーバー名やIDやPasswordは任意の文字に変更して載せてます。
Dim i As String
i = Range("A1").Value
With Selection.QueryTable
.Connection = "ODBC;DSN=RRRR;UID=TTTT;PWD=tttt;SERVER=cccc,vvvv;"
.CommandText = Array( _
"SELECT T_ARRIVAL3.ARR_DTXX, T_ARRIVAL3.LOT_NOXX, T_ARRIVAL3.SEQ_NOXX, T_ARRIVAL3.CUST_CDX, T_ARRIVAL3.PROS_NMX, T_ARRIVAL3.NUM_QTYX, T_ARRIVAL3.BI_DTXXX, T_ARRIVAL3.OEM_NOXX, T_ARRIVAL3.REKI_CDX, T_AR" _
, _
"RIVAL3.EMP_CDXX, T_ARRIVAL3.UP_DTXXX, T_ARRIVAL3.UP_TMXXX, T_ARRIVAL3.UP_MACID, T_ARRIVAL3.MARK_LOT, T_ARRIVAL3.DIVI_FLG, T_ARRIVAL3.RETN_FLG" & Chr(13) & "" & Chr(10) & "FROM TAKAKI.T_ARRIVAL3 T_ARRIVAL3" & Chr(13) & "" & Chr(10) & "WHERE (T_ARRIVAL3.UP_D" _
, "TXXX>=i)" & Chr(13) & "" & Chr(10) & "ORDER BY T_ARRIVAL3.UP_DTXXX, T_ARRIVAL3.UP_TMXXX")
.Refresh BackgroundQuery:=False
End With
End Sub
No.1ベストアンサー
- 回答日時:
.CommandText = "SELECT T_ARRIVAL3.ARR_DTXX, T_ARRIVAL3.LOT_NOXX, T_ARRIVAL3.SEQ_NOXX, T_ARRIVAL3.CUST_CDX," & _
" T_ARRIVAL3.PROS_NMX, T_ARRIVAL3.NUM_QTYX, T_ARRIVAL3.BI_DTXXX, T_ARRIVAL3.OEM_NOXX," & _
" T_ARRIVAL3.REKI_CDX, T_ARRIVAL3.EMP_CDXX, T_ARRIVAL3.UP_DTXXX, T_ARRIVAL3.UP_TMXXX," & _
" T_ARRIVAL3.UP_MACID, T_ARRIVAL3.MARK_LOT, T_ARRIVAL3.DIVI_FLG, T_ARRIVAL3.RETN_FLG" & _
" FROM TAKAKI.T_ARRIVAL3 T_ARRIVAL3" & _
" WHERE (T_ARRIVAL3.UP_DTXXX>=" & i & ")" & _
" ORDER BY T_ARRIVAL3.UP_DTXXX, T_ARRIVAL3.UP_TMXXX"
このようにしてみてください。
(上記Command文をそのままコピーペーストして試したほうが良)
Array(...となっているのはマクロ記録のなごりです。長文の場合Arrayで分割して記録されます。
通常は、そのまま文字列で繋いでも差し支えありません。
問題の変数部分ですが、
" WHERE (T_ARRIVAL3.UP_DTXXX>=i)"
という書き方だと『i』という文字列そのものを記述している事になります。
" WHERE (T_ARRIVAL3.UP_DTXXX>=" & i & ")"
というように、"文字列" & 変数 & "文字列" と記述しなければなりません。
Sub try()
Dim i As String
i = Range("A1").Value
MsgBox " WHERE (T_ARRIVAL3.UP_DTXXX>=i)"
MsgBox " WHERE (T_ARRIVAL3.UP_DTXXX>=" & i & ")"
End Sub
御回答、有難うございます!
早速試してみたところ万事上手く行きました。
投稿してから数日経過しており、半分諦めていたので本当に嬉しいです。
御親切且つ御丁寧に御説明頂き、本当に有難うございました。
どうしてもこの部分が上手く行かずに1ヶ月以上躓いた状態でした。
変数の書き方が拙かったのですね。
非常に勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】エラー【#DIV/0!】が...
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
カーソルオープンでエラー(ORA...
-
AccessVBAでExcelを起動し、罫...
-
エクセルでURLに特定文字が含ま...
-
実行時エラー -'-2147417848
-
Debug.exe実行時にWinMainCRTSt...
-
Invalid procedure call or arg...
-
なぜエラーになるのでしょうか...
-
[Delphi] データセットは閉じて...
-
「アプリケーション定義または...
-
VBA実行時のエラー
-
OLEDB.NETで接続できない
-
トランスポートレベルのエラー
-
VBAでESCキーを無効にしたいの...
-
ExcelVBA Range クラスの Page...
-
【VBA】ボタンに登録したマクロ...
-
VBS実行時エラー オブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
【Excel VBA】マクロをボタンに...
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VB6+SQL サーバー 2000 で 実行...
-
OLEDB.NETで接続できない
-
EXCEL/VBAで、自分のPCだけエラ...
-
ExcelVBA Range クラスの Page...
-
Invalid procedure call or arg...
-
VBAでのエラー
-
AccessVBAでExcelを起動し、罫...
-
[Delphi] データセットは閉じて...
-
VBAで実行時エラー'424' オブジ...
-
なぜエラーになるのでしょうか...
-
ADODB.Streamを使用してUTF-8を...
おすすめ情報