- ベストアンサー
エクセルの自動更新
1・現在、エクセルの「会員名簿.xls」を開きますと、アクセスの「顧客管理.mdb]の最新データーで、エクセルの「会員名簿.xls」が自動的に更新されるように設定してあります。 2・出来れば、その都度エクセルの「会員名簿.xls」を開かないで、下記のような時点で、エクセルの「会員名簿.xls」を、マクロなどで更新(「会員名簿.xls」を開いた時と同じ状態)出来ないかと考えております。 (A).アクセスの「顧客管理.mdb]を閉じる時点。 (B).アクセスの「顧客管理.mdb]は、閉じる前に必ず初期化ボタンをクリックする設定になっていますのでその時点。 アクセスの知識は皆無ですので、宜しく御願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >エクセルの「会員名簿.xls」が自動的に更新されるように設定 http://oshiete1.goo.ne.jp/qa3342564.html こちらを、どのように対応したのか、そのままになっているので分かりませんが、仮に、その話を生かして、Excelの外部データの取り込みのインポートが出来ているという前提としています。 そうすると、Accessから、Excelのそのブックを呼び出しすれば、インポートされませんか?ただ、それでは、あまり、利口な方法とはいえないので、自動更新をやめて、Book を、呼び出して、QueryTable でインポートさせればよいと思うのです。実際には、ブックは開いているのかは分かりませんので、正常に終わったら、「正常終了」のメッセージを出してみました。 以下は、ものすごく簡単なサンプルを作ってみました。 なお、Excelのデータの取り込みの左上端の部分が、以下の場合は、Sheet1 の A1になっています。ただ、私には、Accessでも、Excelでも、どちらでも同じような気がします。それに、Excelは開いた時に、更新してくれるのだから、便利だと思います。 '設置:Access Formモジュール等 Dim xlApp As Object Dim xlBook As Object Const FNAME As String = "C:\TestBook.xls" On Error GoTo ErrHandler Set xlApp = CreateObject("Excel.Application") With xlApp .Visible = False Set xlBook = .WorkBooks.Open(FNAME) xlBook.Worksheets("Sheet1").Range("A1").QueryTable.Refresh xlBook.Close True .Quit End With ErrHandler: If Err.Number > 0 Then MsgBox Err.Description Else MsgBox "正常終了", vbInformation End If Set xlBook = Nothing Set xlApp = Nothing
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
●なぜ現状で困るのか不可解。 ●現状の >エクセルの「会員名簿.xls」を開きますと、アクセスの「顧客管理.mdb]の最新データーで、エクセルの「会員名簿.xls」が自動的に更新されるように設定してあります。 は質問のことが行われているのではないですか。>開きますとの機会に、エクセル側で何かしている(例えばVBAプログラムが動く)という確証はありますか。 ●>アクセスの知識は皆無ですので でありながら、なぜ、多分アクセスVBAでしかできない高度のことを回答要求するのですか。 現状を作った方に改良を頼むのが筋では。 この質問コーナーはシステム課題を丸投げする場でないはず。
お礼
imogasi様 ご忠告ありがとうございました。
お礼
Wendy02様 非常識な御願いをしてしまい御詫び申し上げます。 質問を締め切らせて頂くにあたり、ポイントを付与させていただきま す。 心情御賢察の上、御容赦下さい。 今後も御指導頂くことが、多々あると思いますが、宜しく御願いいたし ます。 oguno
補足
Wendy02様 要領の得ない質問にもかかわらず、いつも御指導頂き、本当に有難う御座います。 今回も、御丁寧な御指導を参考に試行錯誤しながら、トライしました。 その結果を記述いたしますので、お手数ですが御一読いただければ幸いです。 ●試行錯誤の結果を記述致します。 (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」を使用するその後のエクセルの操 作が思い通り出来ます。 ただ、たマクロの記述が、これで正しいのかどうか判断がつきません。 ●ご指摘の下記質問に御回答いただきました方は、「目的の結果が得ら れていれば、マクロ記述は間違っていません。」と言っていただきまし たが、今でも本当に大丈夫なのか、自身信じられない状態です。 http://oshiete1.goo.ne.jp/qa3342564.html 勝手な御願いでは御座いますが、下記2点について御指導頂きたく御願い申し上げます。 1・(2)・のマクロが正しいのかどうか。 2・御手数ですが、構文の説明を御願い出来ないでしょうか。 ●試行錯誤の上、偶然とはいえ、自分で記述しましたマクロの 成否・解説を御願いしますのは、道理に外れていますのは、 重々承知しておりますが、伏して御願い申し上げます。