フォームにサブフォームを設置しデータシートビューにしているのですが
その状態で
OfficeLink→Excelに出力をしても
新たなブックができあがり、フォーム1と言う名のシートができあがりますが
データは空です。
親フォームを立ち上げないで
サブフォームのみ開き
OfficeLink→Excelをすると
ちゃんとデータが表示されます。
親フォームを開いた状態のまま
サブフォームのデータを
OfficeLink→Excelに出力
するにはどうすればいいでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
サブフォームの場合、
「ツール(T)→Office Links(L)→Microsoft Office Excelに出力(A)」
「ファイル(F)→エクスポート(E)」で『ファイルの種類』に「Microsoft Excel ~」指定
のどちらについても、出力の対象に指定することはできないようです。
ですので、フォーム上に出力用のボタンを設置するなどして、マクロかVBAで対応する
しかないかと思います。
なお、マクロ/VBAで対応する場合も、
フォームとサブフォームの間にリンク親/子フィールドが設定されているか
サブフォームでフィルタをかけた場合にそれを反映するか
によって、難易度が大きく変わってきます。
以下に、最も簡単な場合の「説明」と、最も難しい場合の「紹介」をします。
【リンクフィールドはなく、フィルタの反映も不要な場合】
マクロなら「出力」アクションを、VBAなら「DoCmd.OutputTo」をそれぞれ使用して、
サブフォームをExcelに出力します。
<マクロ>
アクション:「出力」
オブジェクトの種類: 「フォーム」
オブジェクト名: 「SF1」
出力ファイル形式: Microsoft Excel 97-2003 (*.xls)
自動起動: 「はい」
※サブフォームの『ソースオブジェクト』(表示用のフォーム)が「SF1」の場合。
<VBA>
DoCmd.OutputTo acForm, "SF1", "MicrosoftExcelBiff8(*.xls)", , True
※上記のマクロを作成・保存後、データベースウィンドウでそのマクロが選択(反転
表示)された状態で、メニューから「ツール(T)→マクロ(M)→マクロを Visual Basic
に変換(B)」を実行すると、上記のVBAが自動で作成されるので、参考まで。
注:「出力/OutputTo」は、Accessのバージョンによっては、16000行程度までしか
出力されないため、注意が必要です。
Excel2000~Excel2003の最大行数まで出力する場合は、マクロなら「ワーク
シート変換」アクションを、VBAなら「DoCmd.TransferSpreadsheet」を使用
してください。
【リンクフィールドがあるか、フィルタの反映が必要な場合】
こちらはかなり面倒なので、イメージの紹介だけですが・・・(汗)
ひとつは、サブフォームで現在表示しているレコードを1件ずつExcelのセルに転記、
という方法です。
(マクロの場合はサブフォーム上で先頭レコードからレコード移動を繰り返す形、
VBAではDAOかADOのRecordsetを使用して同様に先頭から移動を繰り返す)
こちらのサイトが参考になります:
http://www.nurs.or.jp/~ppoy/access/access/acF019 …
もうひとつの方法としては、Excelの「CopyFromRecordset」を使用するというものです。
上と違って「レコードの移動」はしないので効率的ですが、大きな問題がひとつ・・・
以下が参考になりますが、説明されているのは「ExcelからAccessのデータを読み込む」
形となっていますので、「AccessからExcelを開いて、CopyFromRecordsetを実行」と
いう形にコードを修正してやる必要があります(汗):
http://support.microsoft.com/kb/246335/ja
・・・以上、参考まで。
「DoCmd.OutputTo acForm, "SF1", "MicrosoftExcelBiff8(*.xls)", , True」
このコードでできました!ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
親フォームからサブフォームの...
-
ACCESS──メインフォームでサブ...
-
クエリで出来た表にチェックボ...
-
【Access】サブフォームのソー...
-
皆さん使っているブラウザを教...
-
アクセスのサブフォームからメ...
-
サブフォームを非表示させる方...
-
親・子リンクフィールドの設定...
-
アクセスでこんなフォームを作...
-
ACCESSのサブフォームコピーに...
-
Access 2003でサブフォームが更...
-
Accessでセレクタをダブルクリ...
-
Accessで埋め込んだサブフォー...
-
access サブフォーム作成につ...
-
ACCESS サブフォームの...
-
サブフォームのあるフォームか...
-
Access VBA には Gridはないで...
-
ACCESSのフォームで列固定?
-
サブフォームに変数を代入し、R...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
クエリで出来た表にチェックボ...
-
親フォームからサブフォームの...
-
皆さん使っているブラウザを教...
-
ACCESS──メインフォームでサブ...
-
ACCESSにて
-
サブフォームを非表示させる方...
-
親・子リンクフィールドの設定...
-
ACCESS VBA メインフォーム及び...
-
ACCESSのフォームで列固定?
-
ACCESSサブフォームにデータ反...
-
Access VBA には Gridはないで...
-
ACCESSで条件によってサブフォ...
-
Accessで埋め込んだサブフォー...
-
【Access】サブフォームのソー...
-
ACCESSのサブフォームコピーに...
-
アクセス2003のサブフォームの...
-
サブフォームに変数を代入し、R...
-
ACCESS サブ・メインフォーム...
-
Access フォームで条件抽出し...
おすすめ情報