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

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

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

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

Q&A

解決済

2回答

1398閲覧

adoのsqlにて、like演算子の右側にカラム名を使用したい。

hardmusashino

総合スコア13

VBA

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

0グッド

0クリップ

投稿2018/09/13 04:23

エクセルvbaで、adoのsqlにて、like演算子を用いて前方一致させようとしましたが、抽出できませんでした。
カラム名が、単なるキーワードになってしまったようです。

dim tmpSql as string
tmpSql = "select * from "
tmpSql = tmpSql & "[Sheet1$] "
tmpSql = tmpSql & "where "
tmpSql = tmpSql & "[本コード] like '[仮コード]%' "

右側が文字列、mysqlやオラクル、の情報は沢山あるのですが、、、。

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

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

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

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

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

guest

回答2

0

本来の趣旨とは異なりますが、
VBAでスクリプト等を作成する際の別案として、
ご参考までに。

※メリットとしては、
コードが見やすくなるのと、
[ ]で Join することで、途中のスペース欠損ミスを減らせる
という事があげられます。

VBA

1 Dim Dic As Scripting.Dictionary 2 Set Dic = New Scripting.Dictionary 3 4 Dic.Item(Dic.Count) = "select * from" 5 Dic.Item(Dic.Count) = "[Sheet1$]" 6 Dic.Item(Dic.Count) = "where" 7 Dic.Item(Dic.Count) = "[本コード] like [仮コード] & '%'" 8 9 Dim SQL As String 10 SQL = Join(Dic.Items, " ") 11  ’SQL:select * from [Sheet1$] where [本コード] like [仮コード] & '%'

投稿2018/09/13 05:46

ExcelVBAer

総合スコア1175

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

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

sazi

2018/09/13 05:51

個人的意見ですが、空白より改行(VbCrLf)の方が、見易いのでお勧めです。
hardmusashino

2018/09/13 06:05

ありがとうございました。 Scripting.Dictionaryを使用した構文の書き方、初めて見ました。 参考にさせていただきます。
ExcelVBAer

2018/09/13 07:01

saziさん そうですね! VbCrLf でも SQL が動作するなら、自分も改行の方がいいと思います。 hardmusashinoさん 自分は Dictionary をよく使います。応用が色々ときくので。 動的配列、重複の除去、コード別の集計等にも使えますので、 覚えておくと便利です。 参照設定するのが少し面倒ですが、 ほとんどの環境であれば使えると思います。 (使えない環境はまだ知りません)
guest

0

ベストアンサー

その処理で組み立てられているSQLは

SQL

1select * from [Sheet1$] where [本コード] like '[仮コード]%'

です。
項目との結合なら、以下のようにならないと駄目ですね。

SQL

1select * from [Sheet1$] where [本コード] like [仮コード] & '%'

VBA

1tmpSql = "select * from " 2tmpSql = tmpSql & "[Sheet1$] " 3tmpSql = tmpSql & "where " 4tmpSql = tmpSql & "[本コード] like [仮コード] & '%' "

※文字列結合の演算子は&でよかったかどうかは失念。+や|| かもしれません。

投稿2018/09/13 05:30

編集2018/09/13 05:31
sazi

総合スコア25138

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

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

hardmusashino

2018/09/13 05:45

ありがとうございました! おかげでソースもスッキリと書けそうです。 各コードだけ抽出したものを配列に格納し、 要素数分ループしながら、sqlを実行しようと思っていたところでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問