ACCESSからexcelブックを開いて保存する方法

このQ&Aのポイント
  • ACCESS初心者が仕事で受付管理のツールを作る必要があり、エクセルファイルをテンプレートとして開いて保存する方法を知りたい。
  • サブフォームにボタンを配置し、ボタンを押すとエクセルファイルが開き、受付IDと同名のファイルとして保存される。
  • 保存は自動ではなく、別名で保存しても良い。また、フォームに入力した内容がテンプレートに反映されなくてもかまわない。
回答を見る
  • ベストアンサー

ACCESSからexcelブックを開いて保存したい

ACCESS初心者です。 仕事でどうしても必要に迫られて、受付管理のツールを作ることになりました。 1つの注文で、受付ID(オートナンバー)が付与されます。 メインフォームにタブオーダーをつけてサブフォームを複数配置しています。 そのサブフォームにボタンを置いて Access から既存のエクセルファイルをテンプレートとして開いて テンプレートに入力後、受付IDをファイル名にして、テンプレートとは別もので保存 保存後は、ボタンを押したときに受付IDと同じエクセルファイルが開く このようなことをやりたいと思っています。 ネットでいろいろ探しているのですが ファイルを開くのは見つかっても、保存したものを開くのが見つからず そもそもできるのかどうかもわかっておりません。 自分にスキルがなく、あれこれ凝ったものは作れないので、 保存は自動じゃなくて、自分で別名で保存にしてもかまわないのですし フォームに入力したものが、テンプレートに反映(出力?)されなくてもかまわないです。 参考になるサイト等ありましたら、ご教示いただけますか。 どうぞよろしくお願いいたします。 下記はやりたいことに近いかなと思って見つけたサイトです。 http://www.nurs.or.jp/~ppoy/access/access/acX013.html http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1220895032 http://accessclub.jp/bbs/0227/beginers70136.html

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

  • ベストアンサー
  • jacob-wk9
  • ベストアンサー率36% (85/231)
回答No.1

1番目のリンクの方のサイト、すごいですね。テクニカルかつ分かりやすいです。 同じ方のサイト、#001ではEXCELファイルを新規に作って、データベース内のデータを埋めて保存して閉じる やり方を紹介しています。 http://www.nurs.or.jp/~ppoy/access/access/acX001.html リンクの#013では、テンプレートを元にデータを埋め込み、EXCELの画面を表示したところで、マクロを終了させる (保存はユーザーの手動に任せる)方法を紹介しています。 この#013の最後に#001の保存方法を組み合わせれば、たぶん出来ると思います。 #013の末尾(http://www.nurs.or.jp/~ppoy/access/access/acX013.html) -------------------------------------------------------------- 'データ貼り付け With wkb.Worksheets(stSheet) .Range(stRng).CopyFromRecordset Data:=rst End With '#001の保存コード(http://www.nurs.or.jp/~ppoy/access/access/acX001.html) '保存ダイアログからの入力を受けて保存 ' fName = xls.Application.GetSaveAsFilename(,"Microsoft Excel(*.xls),*.*", 1) '保存ダイアログを使わず、fnameを自動的に指定する方法(jacob-wk9付け足し) fName=rst!受付ID If fName <> False Then wkb.SaveAs FileName:=fName MsgBox "新規ブックは、「" & fName & "」の名前で保存しました!", vbOKOnly Else MsgBox "新規ブックは保存できませんでした。", vbOKOnly End If Set rst = Nothing: Set cnn = Nothing Exit_opnXLtmp: Set wkb = Nothing: Set xls = Nothing Exit Sub Err_opnXLtmp: MsgBox Err.Description Resume Exit_opnXLtmp End Sub ---------------------------------------------------------------------- こんな感じになるのではないでしょうか。

mix-jam
質問者

お礼

風邪で寝込んでしまい、ご連絡遅くなって申し訳ございません。 二つのサイトの合体技なんですね。 VBAがわからないので、合体させるなんて自分じゃ考えられませんでした。 明日から出社するので、作成中のツールで試してみようと思います。 ツールを作っているネットワークは、インターネットにつながっていないので 手打ちでがんばってみます。 結果はまたご報告します。

mix-jam
質問者

補足

jacob-wk9 様 本当に結果報告が遅くなり申し訳ございません。 やっと教えていただいたことが試せるところまで来ました。 #013の最後に#001の保存方法をつけてみたところ、 まず最初にコンパイルエラーというのがでて、END subが見つかりませんとなり 一番最初の private sub の行が黄色くなってしましました。 何度も見直してみたのですが、打ち間違いは無いように見えます。 #013の データ貼り付け With wkb.Worksheets(stSheet) .Range(stRng).CopyFromRecordset Data:=rst End With のあとに、jacob-wk9様が回答に書いてくださった 保存ダイアログ~から下のところをそのまま打ち込みしています。 このままだと、保存方法が2つある状態に見えるのですが ファイルの保存方法で、jacob-wk9 様が追記してくださった 保存ダイアログを使わず、fnameを自動的に指定する方法 を記述した場合は その前にある、保存ダイアログからの入力を受けて保存 のところは削除してよいのでしょうか? こんなに遅くなってからで、大変恐縮なのですが ご教示いただければ幸いです。 どうぞよろしくお願いいたします。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

ゴチャゴチャ書き連ねても消化不良になるかと思いますので 入り口と非常口?だけです。 ActiveXオートメーション(OLEオートメーション)の概要 http://home.att.ne.jp/zeta/gen/excel/c04p44.htm 15.消えないExcelのプロセス http://homepage1.nifty.com/rucio/main/technique/teq_15.htm (VBのお話ですが、Access→Excel でも同様です)

mix-jam
質問者

お礼

連休から風邪で寝込んでしまい、お返事遅くなって申し訳ございません。 どちらのサイトも拝見しましたが、 私が理解するにはとてもハードルが高そうです・・・(^^;) VBAが理解できたら、きっとACCESSで思うがままのツールが作れるんでしょうね。 あこがれちゃいます。 もう少しACCESSが使いこなせるようになったら、 もう一度読んでみます!ありがとうございました。

関連するQ&A

  • Accessのコンボボックスに連動して、サブフォームを表示させたい。そ

    Accessのコンボボックスに連動して、サブフォームを表示させたい。そして、そのサブフォームに新しいデータを追加したい。 コンボボックスに連動さして、サブフォームを表示させるやり方は、検索して見つける事ができました。 そのページはこちらです。 http://www.nurs.or.jp/~ppoy/access/access/acF028.html しかし、データをサブフォームに追加しようと思うと上記リンク先のやり方では出来ませんでした。 何か方法はないでしょうか?

  • Access2000のVBAでエクセルマクロ実行

    お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。

  • アクセスで・・

    メインフォーム(ID)、サブフォーム(サブID、IDとIDのリレーション)があります。 それとサブフォームの内訳を入力するサブサブフォームが展開し、これはサブフォーム上のコマンドボタンクリックで、サブIDとリレーションされた形でデータを入力する。 という風にしたいのですが、コマンドボタンクリックのところのコードがわかりません・・ どなたかご教授願えませんでしょうか?

  • Accessについて教えて下さい。

    Access初心者です。 フォームのクリック時のイベントで開いた別のフォームを、サブフォームのリンクフィールドように、リレーションの項目を入力しなくてもテーブルに反映させるにはどうしたらいいのでしょうか? 今現在の状況は テーブルは顧客リスト、送付物、問合せがあり顧客IDでリレーションになっています。フォームはそれぞれ作りました。 メインフォームは顧客フォームで問合せのサブフォームが組み込まれています。送付物フォームはボタンでクリック時開くようマクロで作成しました。where条件は[顧客ID]=[Forms]![顧客リスト]![顧客ID]となっています。 例えば手紙を送ることになり、顧客フォームで該当者を選択→ボタンをクリックし送付物フォームを開く →顧客IDを入力→その他必要事項を入力というかんじです。 顧客IDを入力しないと『フィールド顧客IDとキーが一致しているレコードをテーブル顧客リストで探すことはできません』とエラーになります。 問合せのサブフォームは顧客IDでリンクフィールドとなっています。 ID表示が必要ないので顧客IDは消してあります。 こちらは顧客フォームで該当者を選択し、顧客IDを選択しなくても入力すると問合せテーブルに顧客IDも反映されています。 問合せのように送付物にも顧客IDを選択しなくても反映させるようにするにはどうしたらよいでしょうか? 説明がわかりづらいとは思いますが、お分かりになる方よろしくお願い致します。

  • ACCESSで名前を付けて保存は・・

    EXCELやWordのようにAccessもファイル→名前を付けて保存から、ファイルを別のフォルダでに保存(コピー)出来ないものでしょうか? 名前を付替えて保存したいのですが、Accessは出来ないのですか?

  • Access 「このレコードを保存することはできません」

    フォームのForm_BeforeUpdateイベントで、Cancel=Trueを設定し、更新を抑制しました。すると、フォームやAccess自体を×ボタンで閉じようとするときに「レコードを保存することはできません」というメッセージが出てしまいます。このメッセージを抑制する方法はありますか?

  • アクセス APIファイルを利用して複数画像を選択

    1つのレコードの中にwindowsのAPIファイルを開いて複数の画像をリンクさせてフォームに表示させる方法を模索しています。 access2010を利用し、単票フォームで作成。VBAのプログラム知識はありませ。ネット上のサンプルを主に利用しています。 参考No1 http://www.accessclub.jp/samplefile/samplefile_78.htm 参考No2 http://www.nurs.or.jp/~ppoy/access/access/acF039.html 上記の参考No1はフォームに一枚の画像をAPIを開くモジュールを利用して表示しています。 上記の参考No2はフォームに3枚の画像を表示していますが、ファイル名を入力する方法です。 この2つのやり方を合わせたような操作をしたいと思っています。 つまり、3枚(複数)の画像を表示するのに、一つ一つ選択ボタンがありAPIを開いて画像を表示させる方法です。 分かる方がいましたら、教えてください。 アクセス初心者で説明が分かりにくいかもしれませんがお願いします。

  • サブフォームのデータを保存する方法

    VBAであるフォーム上のコマンドボタンで、別のフォーム上にデータを入力し保存をするのはどういうコードになるでしょうか。入力は出来るのですが、そのまま続いて保存する方法が分かりません。 またそのフォームにサブフォームが挿入されている場合、サブフォームのデータも保存するにはどうすればいいでしょうか。 よろしくお願いします。

  • テーブルにデータを保存するフォームの考え方

    Access2000で勉強中ですが、フォーム上にID 商品名 単価 のテキストボックスを作成しました。 その下に、保存されたデータを表示されるようにサブフォームを作っています。そして 新規保存・修正・削除ボタンを1つの入力フォーム上に作成して処理できるものを作ろうと考えています。 サブフォームのレコードセレクタを指定して修正ボタンを 押すとテキストボックスに内容が表示されて修正できるようにするにはどうすればよいでしょうか? 説明が下手なのですが、簡単に言うと サブフォーム上ではレコードの選択(レコードセレクタ)の指定だけで入力をさせないようにしたいのです。 VBAのレコードセレクタの取得が良く判らないので よろしくお願い致します。

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

専門家に質問してみよう