いつもお世話になっております。
表題の通りですが、accessのフォーム内にあるタブコントロールの情報をExcelに抽出したいです。
フォームのレコードソースであるテーブルは抽出できたのですが、どうしてもタブコントロール内にある別テーブルを元にしたサブフォームや
テキストボックスの情報をExcelに抽出できず困っています。
やはり1回ですべてを抽出するのはできないのでしょうか。
また、1回でできないのであれば別で抽出する方法など教えて頂きたいです。
Excelに抽出するためのコードを貼ります。
'Excelにデータを出力 Function ExcelData(frm As Form) On Error GoTo Err_Excelcmd_Click 'DAOで抽出結果のクローンを作成 Dim xls As Object 'Excel.Applicationを代入するオブジェクト変数 Dim wkb As Object 'Excel.Wookbookを代入するオブジェクト変数 Dim rst As DAO.Recordset '現在のレコードセットを入れる変数 Dim idx As Long 'フィールド数変数 Set rst = Nothing 'データリストの初期化 Set rst = frm.RecordsetClone 'フォームのレコードセットのクローンを代入 'レコードが存在しない場合、処理を中止 If rst.BOF = True And rst.EOF = True Then MsgBox "出力出来るデータがありません。", vbOKOnly + vbExclamation, "出力不可" 'レコードセットを閉じる rst.Close: Set rst = Nothing Exit Function End If 'レコードが存在する場合、Excelに出力 'レコードセットの最初のデータにカーソルを移動 rst.MoveFirst 'Excelファイルを内部的に作成 Set xls = CreateObject("Excel.Application") '作成されたExcelファイルにワークブックを追加 Set wkb = xls.Workbooks.Add() '追加されたワークブックに、レコードセットのデータをコピー With wkb.Worksheets(1) For idx = 1 To rst.Fields.Count .Cells(1, idx).Value = rst.Fields(idx - 1).Name Next .Range("A2").CopyFromRecordset Data:=rst End With 'レコードセットを閉じる rst.Close: Set rst = Nothing 'Excelデータを表示 xls.Visible = True xls.UserControl = True 'メモリに展開されたExcel用オブジェクト変数を開放 Set wkb = Nothing Set xls = Nothing Exit_Excelcmd_Click: Exit Function Err_Excelcmd_Click: 'エラーの場合、エラーNOと内容を表示 ' MsgBox Err.Number & Err.Description MsgBox "エラーのため、Excelへ出力できません。" & vbCrLf & "一旦フォームを閉じ、再度トライしてください。", _ vbOKOnly + vbCritical, "Excel出力不可!" Resume Exit_Excelcmd_Click End Function
hatena19様
上記画像参照で、サブフォームコントロール名はこの名前プロパティでいいのでしょうか?
名前プロパティで記載いただいたコードをコマンドボタンに入力すると、「メソッドまたはデータメンバーが見つかりません」と出てしまいます
申し訳ございませんが、回答をお願い致します。
回答2件
あなたの回答
tips
プレビュー