Access97でデータベースを作っています。
ある機器の部品リストを作っているのですが、テーブルに保存されている情報を
選択画面で、取り出したいフィールドとレコードをチェックボックスなどで選択し、選択したデータのみをExcel97に出力したいのです。
方法ご存じの方、ご教示願います。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

再びmaruru01です。



コマンドボタンのクリックイベントにSQLステートメントの実行とファイルのエクスポートを記述すればよいとおもいます。

SQLステートメントは、

Dim SQL As String

SQL="SELECT (フィールド) INTO (一時テーブル名) " & _
"FROM (抽出元のテーブル名) " & _
"WHERE (抽出条件)"
DoCmd.RunSQL SQL

という風で、ファイルのエクスポートは、

DoCmd.TransferSpreadsheet acExport, acSpreadsheetExcel7, (一時テーブル名), (Excelファイル名)

という風です。
詳しくは、個々のヘルプを参照して下さい。
では。
    • good
    • 0
この回答へのお礼

御回答有り難うございます。

実はまだSQLステートメントを使用したことがなく、使い方よくわかりませんでした。
でも、maruru01さんの御回答で一筋の光が見えてきました。
ちょっと勉強してためしてみます。
また何かありましたら宜しくお願いします。

お礼日時:2002/02/15 11:33

こんにちは。

maruru01です。
選択したデータのみの一時テーブルを作成し、それをExcel形式でエクスポートしてはどうですか。
では。

この回答への補足

maruru01さん御回答有り難うございます。

ただ、Excel形式でエクスポートする方法はたくさんありますが、
使用者がテーブルですとかクエリーですとかそういうものを意識しないで選択画面で誘導して好きなデータだけエクスポートできるようにしたいのです。Accessを知らない人手も操作できるように。
具体的には、選択用フォームを一つ作り、そこには選択可能なフィールド名とレコード名がチェックボックスと共に羅列してあり、必要な項目のみをチェックして、「Excelへ出力」と書いてあるコマンドボタンをクリックするとエクセルファイルができあがると言うようなものを考えています。
以上は人がやる操作ですが、その裏では自動的に選択されたデータのみのテーブル或いはクエリーを一時作成して、Excelへ出力したら一時作成したテーブル或いはクエリーを削除すると言ったようなものです。

クエリーとフォームとマクロをうまく使って出来るのでは?と考えているのですが、マクロでクエリーを作成し必要なレコードを抽出したりするのは可能なのでしょうか?

補足日時:2002/02/14 13:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QAccess97で作ったデータをWord97であらかじめ作成した表の該当部分に落としたい

こんにちは。Accessについての質問です。

Access97で作ったデータベースがあるのですが、
それをAccessのレポートに出すのではなく、
あらかじめ作ったWordの表(レポートのようにレイアウトしてあるもの)の
該当する部分へデータを選択してそれぞれ落としたいのです。
何か方法があるでしょうか。
よろしくお願いします。

Aベストアンサー

Wordのツールから
差込印刷ヘルパーでできませんか?

Qaccess前月差分クエリ書き換えたくない フィールド1 年月日 フィールド2 商品名 レコードは月

access前月差分クエリ書き換えたくない

フィールド1 年月日
フィールド2 商品名

レコードは月次で年度単位で持ち、毎月、先月分が今月に追加されます。

毎月、前月と前々月分の商品の個数の差を計算します。

フィールド1をformat関数で年月にし、グループ化したものを、201701-201612みたいにクエリを書いて
計算させています。

まずformatが良いのかmonthが良いかも分からないのですが、毎月の差分を取るクエリを書き換えたくなく、元テーブルから計算しやすいように加工するクエリをどう持てば良いか教えて下さい。

Aベストアンサー

以前回答させていただいた
https://oshiete.goo.ne.jp/qa/9605499.html

年月から1ヵ月の期間を求めるなら
DateSerial(Year([年月]),Month([年月]),1)
DateSerial(Year([年月]),Month([年月])+1,1)-1

上は年月の1日を求める
下は年月の翌月1日を出し、その前日(-1)を求めることで末日を求めている

先月を求めるなら
DateSerial(Year([年月]),Month([年月])-1,1)
yyyymmの形にするなら
Format(DateSerial(Year([年月]),Month([年月])-1,1),"yyyymm")

先々月を求めるなら
DateSerial(Year([年月]),Month([年月])-2,1)
yyyymmの形にするなら
Format(DateSerial(Year([年月]),Month([年月])-2,1),"yyyymm")

Qアクセスで複数フィールドを結合して1フィールドを作る際

こんにちは。
OSはWIN2KでAccess2000を使用しております。
「T_データ」テーブルには、
社員コード(数値型)、社員名(テキスト型)、
給料(数値型)、住所(テキスト型)フィールドがあります。
この4つのフィールドを以下の条件を満たしつつ
「T_結合」テーブルの「結合データ」フィールドという
一つのフィールド(テキスト型)に追加したいのです。
------------------------------------------------
1.社員コードは 5桁、社員名は半角30桁、
給料は10桁、住所は全角20桁。
2.社員コード、給料は右詰とし残りは0で、
社員名、住所は左詰とし、残りは空白("")で埋める。
-------------------------------------------------
最終的に「T_結合」テーブルを1レコード85バイトの
レコードとしてエクスポートするのが目標です。
アクセスはUnicodeで管理されているというので単純には
いかなそうなので、どなたかご教授願います。

こんにちは。
OSはWIN2KでAccess2000を使用しております。
「T_データ」テーブルには、
社員コード(数値型)、社員名(テキスト型)、
給料(数値型)、住所(テキスト型)フィールドがあります。
この4つのフィールドを以下の条件を満たしつつ
「T_結合」テーブルの「結合データ」フィールドという
一つのフィールド(テキスト型)に追加したいのです。
------------------------------------------------
1.社員コードは 5桁、社員名は半角30桁、
給料は10桁、住所は全角20桁。
2.社員コード、給料は右詰と...続きを読む

Aベストアンサー

Format([社員コード],"00000")
& Left([社員名] & Space(30),30)
& Format([給料],"0000000000")
& Left(StrConv([住所] & Space(20),4),20)

こんな感じでどうでしょうか?

Qフィールド数の多すぎる・フィールド数が一定でないテーブルのデータ結合の仕方?

私は、accessについてあまり詳しくないものなのですが、仕事上50近くあるデータを一つにまとめたいんです。
データは2つありまして、
1.それぞれのテーブルが微妙にフィールド数が異なる場合の結合
 例)・Aのテーブルのフィールド名 
   名前 クラス名 出身県 出身コード 血液型 性別
   
   ・Bのテーブルのフィールド名
   名前 出身県 血液型 性別

   ・Cのテーブルのフィールド名
   名前 クラス名 出身コード 血液型 
  ⇒このように微妙に異なる。しかもレコード数がかなり多いのです。これは、ユニオンクエリは使えないですよね?何かいい方法はないでしょうか?


2.テーブルの構造は同じなのですが、フィールド数が多くてユニオンクエリを使おうとすると、『フィールド数が多すぎる』とエラーメッセージがでてしまう。この場合の対処方法でいいのはないでしょうか?

なにぶん、私はaccessをあまり使わないのでわかりにくい質問だと思いますが、どなたかすみませんが教えてください。お願いします。

Aベストアンサー

> これは、ユニオンクエリは使えないですよね?

ユニオンクエリで、フィールドを「*」で省略することはできなくなりますが、
表示するフィールドを列挙する形であれば、対応可能です。
(但し各Select文で、不足するフィールド分のダミー列の追加が必要)

【例】
Select 名前, クラス名, 出身県, 出身コード, 血液型, 性別 From A
Union
Select 名前, "(不明)", 出身県, "(不明)", 血液型, 性別 From B
Union
Select 名前, クラス名, "(不明)", 出身コード, 血液型, "(不明)" From C;

※当該テーブルがデータを持たない時に「(不明)」と表示させる場合。


> 『フィールド数が多すぎる』とエラーメッセージがでてしまう。

とりあえず、45フィールドほどのテーブルを作成してテストした限りでは、
そのメッセージは表示されませんでした(汗)

もしも、必ずしも常に全フィールドのデータが必要ではないなら、ひとつの
手段としては、上記のように必要なフィールドに限定してユニオンクエリを
作成する、という方法があるかと思います。
(一旦作業用のテーブルを作成し、これに順次、追加クエリで他のテーブル
のデータを追加、というのも考えましたが、なんとなくこちらでも同様に
フィールド数の上限を超えてしまいそう・・・(汗))


あまりお役に立てそうにありませんが(汗)、参考までに。

> これは、ユニオンクエリは使えないですよね?

ユニオンクエリで、フィールドを「*」で省略することはできなくなりますが、
表示するフィールドを列挙する形であれば、対応可能です。
(但し各Select文で、不足するフィールド分のダミー列の追加が必要)

【例】
Select 名前, クラス名, 出身県, 出身コード, 血液型, 性別 From A
Union
Select 名前, "(不明)", 出身県, "(不明)", 血液型, 性別 From B
Union
Select 名前, クラス名, "(不明)", 出身コード, 血液型, "(不明)" From C;

※当該テーブル...続きを読む

Qaccessでデータインプット済みのフォームに新フィールドを作りたい。

作成したaccessデータベースを改造したいのです。既にデータ打ち込み済みのフォーム(メイン/サブのメインに)に新フィールを増やしたいと思いました。
*テーブルにもクエリにも追加したのですが、フォームにとりかかるとその結果が「フィールドリスト」に入っておらず作業中断の状況です。
どなたか、お気づきの方、ご指導ください。

Aベストアンサー

>メイン/サブのメインに新フィールを増やしたい

メインフォームとサブフォームがあるってことですか?フィールドを追加したいメインフォームのレコードソースは、何を指定していますか?


>...「フィールドリスト」に入っておらず作業中断の状況です。

推測するに、メインフォームの[レコードソース]にクエリが設定されているみたいですが、そのクエリに誤りがあるのではないかと思います。

クエリの内容をもう一度御確認して下さい。クエリのデザインビューで、テーブルに追加したフィールドが、クエリで選択フィールドに指定されていますか?

ちなみに、クエリの「テーブルの表示」で表示されるリストボックスに表示されているだけではダメですよ。


人気Q&Aランキング

おすすめ情報