質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

6946閲覧

SQL文を文字列として変数にいれてExcelに出力したいです。

Naoko_Coco

総合スコア54

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/05/15 09:21

前提・実現したいこと

SQL文を文字列として変数にいれてExcelに出力したいです。
もうこれしかないのですが。。。
まず、文字列として変数に入ってくれません。
’130’でもエラーになったり、BETWEENがエラーとなったりして赤文字になります。
現状はloginから全てが赤文字表記になってしまいます。
※Excel出力のコードはまだ書いてません。

発生している問題・エラーメッセージ

構文エラー

該当のソースコード

Sub SQL抽出() Dim sday As String Dim fday As String Dim wb As Workbook Dim sh As Worksheet Set wb = ThisWorkbook Set sh = wb.Worksheets("条件") '①期間内ログイン者抽出 Dim login As String sday = wb.sh.Range("D2") fday = wb.sh.Range("D3") login = "SELECT _ distinct kr_recoponloginlog2.customer_cd _ into #login _ FROM _ dba.kr_recoponloginlog2 _ WHERE_ kr_recoponloginlog2.kigyo_cd='130' and _ kr_recoponloginlog2.loginday BETWEEN ' & sday & 00:00:00' _ AND ' & fday & 00:00:00'" End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

変数 sday fday は、"" の外に出さないと。

vba

1login = "SELECT " & _ 2 "distinct kr_recoponloginlog2.customer_cd " & _ 3 "into #login " & _ 4 "FROM " & _ 5 "dba.kr_recoponloginlog2 " & _ 6 "WHERE " & _ 7 "kr_recoponloginlog2.kigyo_cd='130' and " & _ 8 "kr_recoponloginlog2.loginday BETWEEN '" & sday & " 00:00:00' " & _ 9 "AND '" & fday & " 00:00:00'"

下記の2行もエラーになるので、修正ですね。

vba

1 Set wb = ThisWorkbook 2 Set sh = wb.Worksheets("条件") 3 4'①期間内ログイン者抽出 5 Dim login As String 6 'sday = wb.sh.Range("D2") 7 sday = sh.Range("D2").Value 8 'fday = wb.sh.Range("D3") 9 fday = sh.Range("D3").Value

投稿2019/05/15 10:16

編集2019/05/15 10:24
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Naoko_Coco

2019/05/16 00:56

その通りです。。。 最近いろんなことやってて変数に値すら入れられなくなって恥ずかしい限りです。 回答ありがとうございました。
guest

0

私もttyp03さんのように記述しますが、一応別な書き方として
ついでに日付型の修正とinto #loginを省いた。

VBA

1login = "SELECT " & _ 2 "distinct kr_recoponloginlog2.customer_cd " & _ 3 "FROM " & _ 4 "dba.kr_recoponloginlog2 " & _ 5 "WHERE " & _ 6 "kr_recoponloginlog2.kigyo_cd='130' and " & _ 7 "kr_recoponloginlog2.loginday BETWEEN #" & sday & " 00:00:00#" & _ 8 "AND #" & fday & " 00:00:00#" 9

投稿2019/05/15 09:40

編集2019/05/15 12:02
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Naoko_Coco

2019/05/16 00:58

回答ありがとうございます。 文字列として表示したいので日付型はこのままで大丈夫です。
guest

0

文字列の途中で改行はできません。
こんな感じで書くのが良くあるパターンでしょうか。

VBA

1login = "" 2login = login & "SELECT " 3login = login & "distinct kr_recoponloginlog2.customer_cd " 4login = login & "into #login " 5login = login & "FROM " 6login = login & "dba.kr_recoponloginlog2 " 7login = login & "WHERE " 8login = login & "kr_recoponloginlog2.kigyo_cd='130' and " 9login = login & "kr_recoponloginlog2.loginday BETWEEN ' & sday & 00:00:00' " 10login = login & "AND ' & fday & 00:00:00'" 11

投稿2019/05/15 09:26

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2019/05/15 23:48

他の回答見て気づきました。 変数も含まれているのですね。 そこのところはこんな感じでしょうか。 login = login & "kr_recoponloginlog2.loginday BETWEEN '" & sday & " 00:00:00' " login = login & "AND '" & fday & " 00:00:00'"
Naoko_Coco

2019/05/16 01:00

回答ありがとうございます。 こんな書き方もありますね。 こっちのほうがすっきり見やすいですね。 書き直します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問