• ベストアンサー

【Access】Excelへのエクスポート

OS:Windows2000 ソフト:Access2003 単票形式のフォームにコマンドボタンを配置し、 そのボタンをクリックするとフォームで表示されているレコードのみを Excel形式でエクスポートするという機能を作成しようとしています。 ボタンを押すとまずそのレコードの主キーを取得し、 その主キーでクエリ抽出してエクスポートをするのでしょうか? VBAで取得した変数を事前に作成クエリのSQL文の変数に代入なんて出来ませんよね、、、? どのようにすればいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#11594
noname#11594
回答No.5

#4の続きです。  抽出条件が間違ってます。  「抽出条件:」欄には、  [Forms]![フォーム名称]![フォーム上のフィールド名称]  と書かなければなりません。  「抽出条件:」欄にカーソルを置いて右クリックし「ビルド...」を選択し、「式ビルダ」が現れたら「フォーム」をダブルクリックし「すべてのフォーム」をダブルクリックし、当該フォームをダブルクリックします。するとフォームに定義されているフィールドの一覧が現れますので、[ID]をデータソースとするフォーム上のフィールドをダブルクリックして[OK]ボタンを押してください。「抽出条件:」欄に、 [Forms]![フォーム名称]![フォーム上のフィールド名称] が入力されるはずです。  フォーム上のフィールド名称は、[ID]をデータソースとするフォーム上のフィールドでなければなりません。

freednia
質問者

お礼

出来ました!! ありがとうございます。 大変助かりました。

その他の回答 (4)

noname#11594
noname#11594
回答No.4

#3の続きです。  (1) 主キーが格納されるフォームのフィールドは表示されていますか? もし表示されていないなら、表示させて主キーの値を確認して下さい。  (2) クエリーの「抽出条件:」の欄に書いた内容を、そのままここに書けますか? 差し支えなければ書いてください。

freednia
質問者

補足

主キーはフィールド名がIDでオートナンバーで作成しています。 フィールド 抽出条件:[ID] としています。

noname#11594
noname#11594
回答No.3

#1です。  どのようにうまくいかなかったのでしょうか?

freednia
質問者

お礼

どのレコードでボタンをクリックしても、 全レコードが抽出されてしまいます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記誤解している点があれば、補足してください。 >単票形式のフォームにコマンドボタンを配置し (1)エキスポートするきっかけをコマンドボタンのClickイベントにするということですね。いいでしょう。 >そのボタンをクリックすると わかります >フォームで表示されているレコードのみを その後の表現から、推定すると、キー(商品番号のようなものを)フォーム上のテキストボックスなどに入力させる、ということですね >ボタンを押すとまずそのレコードの主キーを取得し ボタンを押すと主キーがわかるということは、ボタンとある特定の主キーが 関連付けてあるということですか。 たとえば特定型番商品ビデオの商品番号に対応して決めるボタンとか。 それとも、ビデオ類をさすのでしょうか。 >主キーを取得し 主キーを取得しないとレコードが特定せず、特定しないと困るケースと、 同一カテゴリのレコードを送ってほしいときとあると考えられます。 どちらにしても、フォーム上には、データの項目情報がないのでしょうから 情報のあるテーブルから加工して作る必要があります。それはクエリの役割です。 >VBAで取得した変数 VBAとはアクセスVBAですね。フォーム上に入力されて得られたデータの変数のことですね。 >事前に作成クエリのSQL文の変数に代入なんて出来ませんよね、、、? できますよ。代入というより、SQLというSQL文法に則った文字列をプログラムで作ります。SELECTやFROMやWHERE というリザーブド(キー)ワードは可変にはあまりしませんが、SELECTするフィールド名やFROM句のあとのテーブル名、特にWHERE句のあとの条件など、特にWHERE A=BのBの部分など、プロが組んだものを見ると、切ったり張ったりのイメージですね。 そしてこのSQL文字列をEXECUTEする指令があります。 http://www.mfi.or.jp/komo/sql.htmなど いい例というわけでなくはじめに目に付いたもの。SQL、strSQL( こういう変数名で記述する人が多い)などでWEB検索すれば、沢山出るはず。 このようにレコードセット(ファイル)を作って、エクセルへエクスポート する例が多いと思います。 >Excel形式でエクスポートするという エクセルへエクスポートするということで、アクセス側でエクセル形式のファイルを作るのではないと思う(それは大変)。 データをエクセルに受け入れてもらって、エクセルがエクセル画面に表示する。エクセル形式で保存したければエクセル形式でエクスポート後で後刻保存すればよい。 ・エクスポートはファイル単位のもの。フィールド項目単位で連動するものでないことの認識にいたってない。 ・SQLとADO・DAOの連携について経験がないか少ないので、この質問になっている ように思いますがいかがでしょう。

freednia
質問者

補足

ADO、DAOについては全くわかっていません。 出来れば、VBA、クエリ、マクロの組み合わせのみでなんとかしたいと思っています。 Excel形式でのエクスポートについてはわかっているので、 コマンドボタンをクリックした際に、 表示されているレコードのみを抽出する方法を模索しているのです。

noname#11594
noname#11594
回答No.1

 入力フォームの主キーを表示しているフィールド名を、クエリーの「抽出条件:」の欄に書けばいいと思います。

freednia
質問者

お礼

それはやってみましたがうまくいきませんでした。 やり方がおかしいのでしょうか?

関連するQ&A

  • MSアクセス エクセルへのエクスポートについて

    アクセスの初心者です。いろいろ調べてみたのですがわかりません。どうか教えてください。よろしくお願いします。 アクセスのフォームにボタンを作り、そのボタンを押すとエクセルにエクスポートするように設定しました。しかしデータが全てエクスポートされてしまいます。目指しているのは”開いているフォームのデータのみをエクスポートしたい”のです。 フォーム名:申込書 エクスポートしたいフォームのデータ(クエリ)名:申込書 エクスポート先:エクセルc:¥申込書 です。 主キー:申込ID 仮にフォームで申込IDが「3」を開いていれば、その「3」のデータのみをエクスポートするVBAを教えてください。 現在はここまでの段階で止まっています。↓これにプラスする記述で目指すものができればと思います。 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "申込書", "c:\申込書.xls", True, "" お手数ですがよろしくお願いします。

  • アクセスからエクセルへのエクスポート方法

    アクセスからエクセルへデータのエクスポートをしたいのですが うまく出来ません。 ご意見頂けますでしょうか。(方法が正しいかどうかもお教え願います。) 内容はフォームは一覧形式で表示しており、一覧それぞれにあるボタンを 押すことによりエクセルへエクスポートする。 1.アクセスで作ったフォーム上にボタンを配置 2.ボタンにはアクセスからエクセルへのエクスポートするマクロを設定   (TransferSpreadSeetの方法で設定) 3.一覧には見えないようにユーザIDを設定している。 4.そのユーザーIDでボタンを押されたユーザIDの情報をエクスポートする。   ちなみにエクスポートする情報はクエリーで作成しています。 エクセルまでは展開されているのですが内容がまったくない状態です。 (エクセルを開いただけ。) うまくユーザIDが渡っているかが疑問なところです。 不明点、不足点などありましたら言って下さい。 よろしくお願いします。

  • アクセス2000について

    アクセス2000でデータベースを作成しています。 幾つかのテーブルをリンクさせて、リンクしたテーブルからフィールドを選択してクエリを作り、そのクエリに基づいて単票形式のフォームを作成しました。 単票フォームの基になっているクエリを使って、表形式のフォームをオートフォームウィザードで作成しようとすると、「インデックスが有効範囲にありません。」というメッセージが出てきてフォームが作成できません。 どうしたらいいのでしょうか?誰か教えてください。

  • アクセス2007のエクスポートについて教えてください!

    アクセス2007の質問です。 マクロでクエリをエクセル形式で出力する方法を教えて下さい。 アクセス2003では「ワークシート変換」というアクションがあったと思います。この機能をアクセス2007で実施したいと考えています。簡単なフォームのボタンを押すと、クエリに定義した内容がデスクトップ等にエクセル形式でエクスポートするように作りたいのです。 ご存じの方どうぞよろしくお願いいたします。

  • ACCESS2000で入力中のレコードを印刷したい

    初心者ですみません。現在入力中の情報だけを印刷したいので、フォームのキーを抽出条件にて設定したクエリーでレポートを作成したのですが、単票、表形式共に#Errorが出ます。クエリーを見ると抽出条件でのレコードが無いのであたりまえかとも思いますが..過去に入力したレコードや、アクティブ状態?(レコードセレクタをクリックした状態)の表形式のレコードは正常に印刷されます。OS=WIN98です。宜しくお願いします。

  • Accessでフォームからレコードの追加について

    Access2016をWindows10で利用しています。 あるテーブルの単票形式のフォームをフォームウィザードから作成しました。 入力規則などがテーブルの各列の設定に沿って作成されていてとても便利なのですが、フォームにいくつか値を入れた時点でレコードが新規追加されてしまいます。 レコードの追加を、すべての入力が終わって「新規追加」ボタン(あとから自分で作成)を押してから行いたいです。 レコードウィザードを使わずにフォームを作成し、フォームの値とクエリを結び付けてボタン押下時にクエリを実行する、というフォームにすれば実現できると思うのですが、それはなかなか手間がかかってしまうので出来るだけ簡便に実現できたらと考えています。 細かい話なので参考ページ、あるいはヒントになる検索キーワードを教えていただけないでしょうか m(‗ ‗)m ?

  • ACCESS サブフォームのビューが単票形式にならない

    ACCESS初心者です。 フォームの中にサブフォームを作成しました。 単票形式にしたいのですが、デザインビューでは単票形式なのに、フォームビューに切り替えると表のようになってしまいます。 サブフォームを単票形式にするにはどうしたらいいでしょうか。

  • Access データーエクスポート方法

    Access初心者です。 データ出力について質問です。VBAがまで理解していないので使用せずに作成してみたいです。 AccessからデーターをCSV形式で出力したいのですが、フォームのボタンクリックで出力のように半自動化 するデザインというか方法のイメージがわきません。 一応、いくつか試しましたが途中から分かりません。 (受注関係のAccessデーターで、出力するクエリだけ完成している状態のものとします) (1)納期の抽出条件にBetween [いつから?] And [いつまで?]を入力。  ↓ 外部データ→テキストファイル→データのエクスポート先の選択のファイル名の形式を.csvへ変更→O.K  ↓ パラメーターが少なすぎます。2を指定して下さい。  ↓ 保存済みのエクスポート操作を実行するマクロボタンを使用する予定でしたが、なすすべ無く... 納期の範囲指定をしてエクスポートするのが何も考えなくて済むので楽なのですが、駄目となると 状態フラグ的なテーブル(例えば未とか済とか)を作成しリレーションして、出力範囲を絞っていくしかないのかとか... ...となると、クエリに状態フラグの抽出条件が違うバージョンをいくつもつくり、その数だけフォームを つくり的な方法なのか... エクスポート先は重複しているデーターは上書き、新規は新規として取込めます。 後は、毎回毎回多量のデータを送る必要がないので、月単位レバルのデーター量に絞ってから出力する だけなのですが... みなさんは、どんなフォームというかデザインというか、どんな方法で自動エクスポート方法を作成していますか? すみません、助けて下さい。 それとも、やはりデータベースの内容など詳しく書き込まないと考えようがないものですか?

  • access VBAエクスポートについて

    VBAでcav形式でエクスポートしたいのですが、 出力元のクエリには、1列目にIDが入っていて、これを除く 2列目以降を出力したいと思っています。 試しに、元クエリを選択するクエリを作って、2列目以降を表示させたものを エクスポートしてみましたが、レコード順番が変わってしまいます。 2列目以降をエクスポートする方法があればおしえて下さい。

  • accessのクエリとフォームの関係についてお尋ねします。

    accessのクエリとフォームの関係についてお尋ねします。 IDを主キーとした同じような構造のテーブルを3つ繋いでクエリを作成し、更にそのクエリをレコードソースとしたフォームを作成しました。 ところがフォームが動かない。テキストボックスを3つ作っていますが、何も表示してないし、レコードも移動しません。 まいった。 accessは2003、vistaを使っております。 素人です。よろしくご教授くださいませ。

専門家に質問してみよう