• ベストアンサー

【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/17069)
回答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