- ベストアンサー
ACCESSからexcelブックを開いて保存する方法
- ACCESS初心者が仕事で受付管理のツールを作る必要があり、エクセルファイルをテンプレートとして開いて保存する方法を知りたい。
- サブフォームにボタンを配置し、ボタンを押すとエクセルファイルが開き、受付IDと同名のファイルとして保存される。
- 保存は自動ではなく、別名で保存しても良い。また、フォームに入力した内容がテンプレートに反映されなくてもかまわない。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 ---------------------------------------------------------------------- こんな感じになるのではないでしょうか。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
ゴチャゴチャ書き連ねても消化不良になるかと思いますので 入り口と非常口?だけです。 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 でも同様です)
お礼
連休から風邪で寝込んでしまい、お返事遅くなって申し訳ございません。 どちらのサイトも拝見しましたが、 私が理解するにはとてもハードルが高そうです・・・(^^;) VBAが理解できたら、きっとACCESSで思うがままのツールが作れるんでしょうね。 あこがれちゃいます。 もう少しACCESSが使いこなせるようになったら、 もう一度読んでみます!ありがとうございました。
お礼
風邪で寝込んでしまい、ご連絡遅くなって申し訳ございません。 二つのサイトの合体技なんですね。 VBAがわからないので、合体させるなんて自分じゃ考えられませんでした。 明日から出社するので、作成中のツールで試してみようと思います。 ツールを作っているネットワークは、インターネットにつながっていないので 手打ちでがんばってみます。 結果はまたご報告します。
補足
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を自動的に指定する方法 を記述した場合は その前にある、保存ダイアログからの入力を受けて保存 のところは削除してよいのでしょうか? こんなに遅くなってからで、大変恐縮なのですが ご教示いただければ幸いです。 どうぞよろしくお願いいたします。