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

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

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

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

5211閲覧

【Access】レコードセットに渡すSQLに「LIKE検索」を使うと、レコードセットからExcel出力した際になぜか空

pecchan

総合スコア555

VBA

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

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/01/25 01:17

Access for Office 365、Win10です。

テーブルデータをレコードセット経由でExcel出力してます。

レコードセットに渡す条件に、「LIKE検索」を使うと、何故かExcel側で空っぽ(列名行だけ)になります。
一意検索などその他は、問題なく出力されます。

空っぽになる際も、エラーは出ません。
LIKE検索自体は、Accessクエリで出力できたので文法的も問題ないようです。

分かる方教えていただけないでしょうか。

宜しくお願い致します。

vba

1Private Sub cmdExcelOut_Click() 2 3 Dim strsql As String 4 5 Dim xlapp As Object 6 Dim myCn As New ADODB.Connection 7 Dim myRs As New ADODB.Recordset 8 Dim colcnt As Integer 9 10 11 On Error GoTo Err_Exit 12 13 14 Dim ReturnArray As Variant 15 ReturnArray = GetFileName(False, "EXCELファイル (*.xlsx,*.xls)", "Excelファイルの保存") 16 If ReturnArray(0) = -302 Then 17 'キャンセルボタンが押されたときの処理を記述 18 Exit Sub 19 20 End If 21 22 23 'EXCELアプリケーションを起動 24 Set xlapp = CreateObject("Excel.Application") 25 26 Set myCn = CurrentProject.Connection 27 28 'これはなぜかダメ 29 strsql = "SELECT * FROM M_事業所 WHERE comp_name_kana Like 'カブ*'" 30 31 'これはOK 32 'strsql = "SELECT * FROM M_事業所 WHERE status = 0" 33 34 'これもOK 35 'strsql = "SELECT * FROM M_事業所 WHERE comp_name_kana = 'カブシキカイシャ テスト'" 36 37 Debug.Print strsql 38 39 'レコードセットオープン 40 myRs.Open strsql, myCn, adOpenForwardOnly, adLockReadOnly 41 42 43 With xlapp 44 .DisplayAlerts = False 45 'セットする過程が見えないよう一旦不可視 46 .Visible = False 47 48 '新しいBookを追加 49 .Workbooks.Add 50 .Worksheets("Sheet1").Select 51 52 'レコードセットのフィールド名(見出し)出力処理 53 For colcnt = 0 To myRs.Fields.Count - 1 54 .Worksheets("Sheet1").Cells(1, colcnt + 1).Value = myRs.Fields(colcnt).Name 55 Next 56 57 '結果値出力処理(1行目はヘッダーなので、2行目1列目からセット 58 .Cells(2, 1).CopyFromRecordset myRs 59 60 '列幅自動調整 61 .Cells.EntireColumn.AutoFit 62 63 '完了したら保存 64 .ActiveWorkBook.SaveAs FileName:=ReturnArray 65 66 MsgBox "出力しました。", vbOKOnly + vbInformation 67 68 .DisplayAlerts = True 69 End With 70 71 Set myRs = Nothing: Close 72 Set myCn = Nothing: Close 73 74 'Excelを終了します 75 xlapp.Quit 76 77 78 79 80 Exit Sub 81 82Err_Exit: 83 MsgBox Err.Number & ":" & Err.Description, vbOKOnly + vbCritical, "OutputExcel()" 84 Set myRs = Nothing: Close 85 Set myCn = Nothing: Close 86 xlapp.Quit 87End Sub

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

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

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

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

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

guest

回答2

0

ADOでのワイルドカードは'*'ではなく%です。

SQL

1SELECT * FROM M_事業所 WHERE comp_name_kana Like 'カブ%'

投稿2019/01/25 01:40

sazi

総合スコア25173

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

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

pecchan

2019/01/25 01:41

sazi様 有難う御座います。 入れ違いになってしまいました! すみません。有難う御座います!
guest

0

自己解決

下記を参考に自己解決しました。

http://ivystar.jp/ms-office/access/wild-card-and-ado-access-is-different/

*→%
に変えることで取得出来ました。

投稿2019/01/25 01:40

pecchan

総合スコア555

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問