オラクルサーバーより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で質問しましょう!
似たような質問が見つかりました
- 英語 訳してください within 3 days prior to the date of arrival 7 2022/11/29 12:51
- 英語 Arrival at inward office of exchange 2023年1月12 中国サ 1 2023/01/12 05:35
- 英語 この英文の文構造がよくわかりません… It remains unclear why preconta 4 2023/01/18 08:21
- ファンタジー・SF SF映画『メッセージ』は地球温暖化に伴う永久氷河後退などの問題を意図した作品ではないですか? 2 2022/09/10 20:33
- 英語 the latterの意味 4 2022/09/07 17:38
- 英語 A healthy 20 centimeters tall. に不定冠詞があるのはなぜでしょうか? 13 2022/10/07 05:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
VB6+SQL サーバー 2000 で 実行...
-
VBAがブレークモードになっ...
-
EXCEL/VBAで、自分のPCだけエラ...
-
実行時エラー48発生時のDLL特定...
-
VBS シートをコピーして別のブ...
-
UWSCのビジー待ちで60秒経った...
-
SQL文をVBAで流すと「型...
-
Application.ActiveInspectorで...
-
AccessVBAでExcelを起動し、罫...
-
ACCESSのエラーで困っています
-
マクロについて教えてください...
-
職場から目的地までの距離集計
-
'Speak'メソッドは失敗しました
-
アクセス 実行時エラー3265
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
おすすめ情報