回答編集履歴

1

説明追記

2021/07/25 01:38

投稿

hatena19
hatena19

スコア33733

test CHANGED
@@ -16,8 +16,46 @@
16
16
 
17
17
 
18
18
 
19
- ADOの場合は、ワイルド文字は `%` (DAOの場合は `*`)
19
+ ADOの場合は、ワイルドカード文字は `%` (DAOの場合は `*`)
20
20
 
21
21
 
22
22
 
23
23
  あと、修正前のコードだと、最後に半角空白が付いたものしか抽出されない。
24
+
25
+
26
+
27
+ 追記
28
+
29
+ ---
30
+
31
+ saziさんの回答を見て気づきましたが、ワイルドカードのエスケープも考慮する必要がありますね。
32
+
33
+ `[`は`[[]`でエスケープする必要があります。
34
+
35
+ `]`はエスケープする必要がないです。`[]]`とするとうまくいきません。
36
+
37
+
38
+
39
+ あと、targetに`\`が含まれないときエラーになるのでそれも対策しておいた方がいいかも。
40
+
41
+
42
+
43
+ ```vba
44
+
45
+ Dim l As Long
46
+
47
+ l = InStrRev(target, "\")
48
+
49
+ If l > 0 Then target = Mid(target, l)
50
+
51
+ ' target = Replace(target, "]", "[]]", , 1) 不要
52
+
53
+ target = Replace(target, "[", "[[]", , 1)
54
+
55
+
56
+
57
+ sql = "SELECT フルパス, 閲覧数 FROM テーブル2 WHERE [フルパス] LIKE '%" & target & "';"
58
+
59
+
60
+
61
+ ```