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

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

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

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

Access

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

解決済

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

pecchan
pecchan

総合スコア10

VBA

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

Access

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

2回答

0評価

0クリップ

4054閲覧

投稿2019/01/25 01:17

Access for Office 365、Win10です。

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

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

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

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

宜しくお願い致します。

vba

Private Sub cmdExcelOut_Click() Dim strsql As String Dim xlapp As Object Dim myCn As New ADODB.Connection Dim myRs As New ADODB.Recordset Dim colcnt As Integer On Error GoTo Err_Exit Dim ReturnArray As Variant ReturnArray = GetFileName(False, "EXCELファイル (*.xlsx,*.xls)", "Excelファイルの保存") If ReturnArray(0) = -302 Then 'キャンセルボタンが押されたときの処理を記述 Exit Sub End If 'EXCELアプリケーションを起動 Set xlapp = CreateObject("Excel.Application") Set myCn = CurrentProject.Connection 'これはなぜかダメ strsql = "SELECT * FROM M_事業所 WHERE comp_name_kana Like 'カブ*'" 'これはOK 'strsql = "SELECT * FROM M_事業所 WHERE status = 0" 'これもOK 'strsql = "SELECT * FROM M_事業所 WHERE comp_name_kana = 'カブシキカイシャ テスト'" Debug.Print strsql 'レコードセットオープン myRs.Open strsql, myCn, adOpenForwardOnly, adLockReadOnly With xlapp .DisplayAlerts = False 'セットする過程が見えないよう一旦不可視 .Visible = False '新しいBookを追加 .Workbooks.Add .Worksheets("Sheet1").Select 'レコードセットのフィールド名(見出し)出力処理 For colcnt = 0 To myRs.Fields.Count - 1 .Worksheets("Sheet1").Cells(1, colcnt + 1).Value = myRs.Fields(colcnt).Name Next '結果値出力処理(1行目はヘッダーなので、2行目1列目からセット .Cells(2, 1).CopyFromRecordset myRs '列幅自動調整 .Cells.EntireColumn.AutoFit '完了したら保存 .ActiveWorkBook.SaveAs FileName:=ReturnArray MsgBox "出力しました。", vbOKOnly + vbInformation .DisplayAlerts = True End With Set myRs = Nothing: Close Set myCn = Nothing: Close 'Excelを終了します xlapp.Quit Exit Sub Err_Exit: MsgBox Err.Number & ":" & Err.Description, vbOKOnly + vbCritical, "OutputExcel()" Set myRs = Nothing: Close Set myCn = Nothing: Close xlapp.Quit End Sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

Access

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