• ベストアンサー

アクセスの住所録をエクセルで会員名簿として使用したい。

現在、アクセスで会員登録をしています。 御指導いただきたき事 1・アクセスで登録した、会員番号・氏名・住所・電話番号等をエクセルで、「会員名簿」として使用したい。 2・アクセスを終了すると同時に、エクセルの「会員名簿」を更新する。 宜しくお願い致します。

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

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.4

こんにちは これだけ出来れば十分ですよ。^^) 1) 目的の結果が得られていれば、マクロ記述は間違っていません。 マクロもプログラムもプログラマーの数だけ記述方法があります。 2) 例のマクロは 「会員名簿更新がクリックされたら、会員名簿.xlsを開いて閉じる」 というだけの記述です。 データ自動更新は、おそらくExcel側VBAのファイルオープンイベントで行われていると思われます。従って、動作の詳細としては、 会員名簿更新ボタンクリック>会員名簿.xls OPEN>データ更新(会員名簿.xlsのマクロ)>Excelアプリケーション終了>保存?ダイアログ>Excel終了 の流れになっていると思われます。

oguno
質問者

お礼

TTak様 >目的の結果が得られていれば、マクロ記述は間違っていません。 ●今でも、本当に大丈夫なのか、半信半疑ですが、お言葉を信じ使用します。 ●要領の得ない質問にもかかわらず、御指導頂きました事、本当に有難う御座いました。 御礼申し上げます。

その他の回答 (3)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

丁寧な補足ありがとうございました。 アクセスの「顧客管理.mdb]を閉じる時点でExcelファイルを更新することは一応可能なんですが、私の知識ではアクセス側のマクロとVBAコードィングが必要です。アクセスの知識が皆無とおっしゃってますので難しいかもしれません。 一応、概要としては、 「顧客管理.mdb]を閉じる時点ですが、ダミーフォームを作ってイベントを発生させます。 このイベントで、会員名簿データをコピーしてエクセルに張り付ける。あるいはエクスポートして上書きというマクロを組む必要があると思われます。

oguno
質問者

補足

TTak様 >丁寧な補足ありがとうございました。 ●とんでもございません。 要領の得ない長文をお読み頂き感謝申し上げます。 ●試行錯誤の結果を記述致します。 (1)・アクセスの「コマンドボタンウィザード」を、使用しましたら 下記のマクロが出来ました。(トライしましたら偶然出来ました。) Private Sub 会員名簿更新_Click() On Error GoTo Err_会員名簿更新_Click Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True oApp.Workbooks.Open "C:\Documents and Settings\xxxxx \My Documents\xxxxx\会員名簿.xls" 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True Exit_会員名簿更新_Click: Exit Sub Err_会員名簿更新_Click: MsgBox Err.Description Resume Exit_会員名簿更新_Click End Sub (2)・上記(1)・のマクロを下記のように修正しました。 Private Sub コマンド12_Click()  ← 初期化マクロ Dim exl As Object Set exl = CreateObject("Excel.Application") exl.Visible = True exl.Workbooks.Open "C:\Documents and Settings\xxxx \My Documents\xxxx\会員名簿.xls" exl.Quit Set exl = Nothing 既存の処理 ← 初期化マクロ end Sub ●(2)・のようにしましたら、偶然、「会員名簿.xls」が開き、更新さ れ、保存の有無を選択するメッセージが表示されました。 保存し閉じますと、「会員名簿.xls」を使用するその後のエクセルの操 作が思い通り出来ます。 ただ、たマクロの記述が、これで正しいのかどうか判断がつきません。 勝手な御願いでは御座いますが、下記2点について御指導頂きたく御願い申し上げます。 1・(2)・のマクロが正しいのかどうか。 2・御手数ですが、構文の説明を御願い出来ないでしょうか。 ●試行錯誤の上、偶然とはいえ、自分で記述しましたマクロの 成否・解説を御願いしますのは、道理に外れていますのは、 重々承知しておりますが、伏して御願い申し上げます。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

ちょっと運用に関して判らない点があるので補足要求です。 「顧客管理.mdb」の中に「会員名簿テーブル」か「会員名簿クエリ」があって、それを「会員名簿.xls」で読み出して表示しているということでよろしいでしょうか。 アクセス側でデータが更新されたタイミングで、開いている状態の「会員名簿.xls」のデータも更新したいということですか。

oguno
質問者

補足

Ttak様 諦めておりましたが、御連絡いただき、ありがとうございます。 出掛けておりましたので、遅くなり申しわけございません。 私の、わかる範囲で、下記に記述致しますので、御理解頂きにくいかとは、思いますが宜しく御願い申し上げます。 1・「顧客管理.mdb」の中の「会員名簿テーブル」を使用しています。 2、現状の作業 《アクセス》 A・「顧客管理.mdb」の「会員登録」フォームから会員の氏名等を入力する。 B・入力が終われば、「顧客管理.mdb」の「初期化」ボタンをクリックする。 *「初期化」ボタンをクリックしないで、会員検索をすると「未登録」と表示されます。 C・Xボタンで閉じる。 《エクセル 会員名簿の更新》 ⇒ この工程を省きたい A・「会員名簿.xls」を開く。 B・開くと、マクロでアクセスの「顧客管理.mdb]の最新データーが読込まれる。 Private Sub Workbook_Open() Call 会員名簿更新 End Sub Sub SpConnect() ←  'DB接続  Sub SpConnect() ←  'DB切断 Sub 会員名簿更新() C・「会員名簿.xls」を保存して閉じる。 《エクセル 会員名簿を使用する作業》 A・会員の名札作成 B・成績表の作成 C・封筒の宛名書き D・其の他 《御指導いただきたき事》 ★出来れば、その都度 《エクセル 会員名簿の更新》作業をしないで、下記のような時点で、エクセルの「会員名簿.xls」を、更新出来ないかと考えております。 ★「会員名簿.xls」が開かれないで更新出来ればベストですが、自動的に「会員名簿.xls」が開かれ、更新され、開いたままでも結構です。 ★更新されるタイミング (A).アクセスの「顧客管理.mdb]を閉じる時点。 (B).アクセスの「顧客管理.mdb]は、閉じる前に必ず初期化ボタンをクリックする設定になっていますのでその時点。 (C).其の他のタイミングでも結構です。 《御指導をお願いする理由》 A・「顧客管理.mdb」作成者と連絡が取れない。 B・平均年齢72歳の同好会ですので、少しでも作業を減らしたい。 C・私自身も、67歳で、エクセルのマクロも自動マクロ程度です。 アクセスはにいたっては、わかりません。 ★事情御賢察の上、御指導いただければ幸です。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

1.アクセスのデータはEXCELで読み込みできます。 メニューの[データ]>[外部データの取り込み]>[新しいデータベースクエリ]> MS Access Database という手順で、会員番号・氏名・住所・電話番号等のデータテーブルを参照させます。そのまま、EXCEL形式で保存できます(行数に制限がある場合もあります)。 2.EXCEL側で1.の操作を行った場合、Access側で最後に保存された(Accessが起動中であれば起動前の)データが反映されます。 なお、EXCEL側ではAccessの更新の有無が判りませんので、Accessが更新終了した場合は、EXCEL側で再度1.の手順が必要になります。

oguno
質問者

補足

TTak様 御指導ありがとうございました。 質問の表現が不適切でした。 御詫び申し上げるとともに、再度の御指導をお願い申し上げます。 1・現在、エクセルの「会員名簿.xls」を開きますと、アクセスの「顧客管理.mdb]の最新データーで、エクセルの「会員名簿」が自動的に更新されるように設定してあります。 2・出来れば、その都度エクセルの「会員名簿.xls」を開かないで、下記のような時点で、エクセルの「会員名簿.xls」を、マクロなどで更新(「会員名簿.xls」を開いた時と同じ状態)出来ないかと考えております。 (A).アクセスの「顧客管理.mdb]を閉じる時点。 (B).アクセスの「顧客管理.mdb]は、閉じる前に必ず初期化ボタンをクリックする設定になっていますのでその時点。 アクセスの知識は皆無ですので、宜しく御願いいたします。