【Excel】データベースクエリ 更新後にWorkbook_Openイベント実行

このQ&Aのポイント
  • エクセル2003で、シートに「外部データの取り込み」→「新しいデータベースクエリ」でアクセスのテーブルを表示させています。データ範囲プロパティで「ファイルを開く時にデータを更新する」にチェックをいれ、Workbook_Openイベントにセルの書式、加工に関するコードを記載しています。しかし、データの更新後に書式設定を行っても、再度更新されてしまい意味がなくなってしまいます。データの更新より後に発生するイベントはあるのでしょうか?
  • Excelのバージョンが2003で、シートに「外部データの取り込み」→「新しいデータベースクエリ」でアクセスのテーブルを表示させています。データ範囲プロパティで「ファイルを開く時にデータを更新する」にチェックをいれ、Workbook_Openイベントにセルの書式、加工に関するコードを記載しています。しかし、データの更新後に書式設定を行っても、再度更新されてしまい意味がなくなってしまいます。データの更新より後に発生するイベントはあるのでしょうか?
  • Excelのエクセル2003で、シートに「外部データの取り込み」→「新しいデータベースクエリ」でアクセスのテーブルを表示させています。データ範囲プロパティで「ファイルを開く時にデータを更新する」にチェックをいれ、Workbook_Openイベントにセルの書式、加工に関するコードを記載しています。しかし、データの更新後に書式設定を行っても、再度更新されてしまい意味がなくなってしまいます。データの更新より後に発生するイベントはあるのでしょうか?
回答を見る
  • ベストアンサー

【Excel】データベースクエリ 開いたらデータの更新後にWorkbook_Openイベントを実行させたい。

エクセル2003です。 シートに 「外部データの取り込み」→「新しいデータベースクエリ」でアクセスのテーブルを表示させています。 データ範囲プロパティで「ファイルを開く時にデータを更新する」にチェックをいれています。 なおかつWorkbook_Openイベントにセルの書式、加工に関するコードを記載しています。 ファイルを開いた時に、 データの更新→書式設定 をしたいのですが、 Workbook_Openイベント→データの更新 になってしまい、結局書式を加工しても更新されて意味がなくなってしまいます。 「データの更新」より後に発生するイベントはありますか? アドバイス宜しくお願い致します。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

'ThisWorkbookModule Option Explicit Private Sub Workbook_Open()   Application.OnTime Now, Me.CodeName & ".macro1" End Sub Private Sub macro1()   ' End Sub ...というような感じでOnTimeメソッドで一拍置いてみてはどうでしょうか。 もしくは「ファイルを開く時にデータを更新する」を止めて OpenイベントでQueryTableのRefreshメソッドを実行すれば良いような気もしますが。 >セルの書式、加工に関するコード... プロパティ「セルの書式を保持する」だけではダメな内容なのでしょうね。

quygquygqu
質問者

お礼

なるほど! 質問してよかったです! ご回答ありがとうございます。 >プロパティ「セルの書式を保持する」だけではダメな内容なのでしょうね。 そう言われるとも思いました ^^; 書式もそうですが、置換などもあるためマクロでやりたかったのです。 大変参考になりました。

関連するQ&A

  • ExcelVBAで質問です。Workbook_openイベントが発生し

    ExcelVBAで質問です。Workbook_openイベントが発生しない。 Excel2003を開いている状態で「ファイル」→「開く」でファイルを開くと Workbook_openイベントが発生しません。他のマクロは正常に動くのですが、 Excelを閉じている状態でファイルを開くとWorkbook_openイベントが発生します。 (Workbook_Activateイベントでも同様の結果になりました。) なぜでしょうか?基本的なことかもしれないですが教えていただけると幸いです。 宜しくお願いします。

  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。

  • クエリでのデータ更新について

    ACCESS2000で更新クエリの質問です。 フィールドの値の合計、カウントなどの集計値を計算するクエリから取り出された値を、更新クエリでデータを更新したいのですが、 「更新可能なクエリでありません」とエラーがでます。 LOOPする方法もあるのですが、できればクエリで一括更新したいと思います。 どなたかご教授お願いします。 やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> コード  個数 1     1 1     2 1     3 2     4 2     4 3     5 3     6 <Bテーブル> コード  個数 1      2      3    ↓↓↓更新後 <結果:Bテーブル>   コード  個数 1     6 2     8 3     11

  • クエリ上でのデータ更新

    Accessのクエリで、クエリ実行した画面の抽出されたデータ上で、データの書き換え・更新ができるクエリと、「このレコードセットは更新できません」と左下に記載されてしまい更新できないクエリがありますが、この2つにはどんな違いがあるのでしょうか? おそらく、元になっているテーブルの何かの設定が違うのだろうかと思うのですが、それがよくわかりませんので投稿しました。 よろしくお願いいたします。

  • 更新クエリがわからない

    windows-xp、Access2003を使っています。 参考書に載っている更新クエリは「同一のテーブル内でデータを更新する」という内容で載っているのを見ました。 が、そうではなく・・・ 更新クエリを作成すると「レコードの更新」という欄が出てくるのですが、そこに、別のテーブルや別のクエリのデータを”ビルド”で作成することはできないのでしょうか? 試みたのですが、”パラメータの入力”というものが出てきてしまいました。 ついでにおわかりになれば、これも教えてください。 ↓↓↓ テーブルAとテーブルB(或いはクエリB)に、同じIDをもつデータがあります。そこで、テーブルAの指定するフィールドへ、テーブルBの新しいデータを入れ込みたい(更新)させたい。 すみませんが、宜しくお願い致します。

  • アクセスのクエリで更新できるようにしたいんですが、

    アクセス2000を使っています。クエリから、作ったフォームを更新したいのですが、できません。どなたか教えて下さい。 二つのテーブルがあります。 ・テーブル1=顧客番号、顧客名、初来店日、来店日2・・・ ・テーブル2=顧客番号、顧客名、アンケートの有無、カードの有無・・・ というようなもので、エクセルから外部データの取り込み→テーブルのリンクで作ってます。 この二つのテーブルから ・クエリ1=顧客番号(テーブル1)、顧客名(テーブル1)、初来日店(テーブ ル1)、アンケートの有無(テーブル2) を作り、これをもとにフォームを作ってフォーム上でアンケートの有無を更新できるようにしたいのですが・・・。 初心者で説明も上手くできなくてごめんなさい。 宜しくお願いいたします。

  • 「クエリの更新」がどこにあるのかわからない。

    エクセル2003です。 ブックを開くと 「クエリの更新 このブックには、自動更新される外部データへのクエリが含まれています、、、」 という表示が出ます。 しかしシートが多すぎて上、自分が作ったファイルではないため、 どこにそのデータがあるのかわかりません。 ジャンプ→セルの選択→選択オプション のように調べることはできますか? よろしくお願いします。

  • テーブル作成クエリとデータベースの分割

    当方、Accessは全くの素人ですが、急遽Accessにて連絡先台帳を 作ることとなりました。 参考書を片手に、なんとかそれ相応のものになってきましたが、 表題部分にて四苦八苦しております。 どうぞ、ご教授のほどよろしくお願いします。 まず、連絡先テーブルを作成しました。 この中には個人名、会社名、住所などを入力するようにしました。 会社名の中には複数のレコードがあるため、個人向けではなく、会社向けの 送付用のラベルを作成したいと思い、テーブル作成クエリを用いて 会社テーブルを作成しました。 上記テーブルから、ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 また、この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、新たな連絡先が 追加されたときなど、再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。 できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか? 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、できればコード等を記載して いただけると助かります。 Access2007を用いております。 どうぞよろしくお願いします。

  • 過去データに対するデータベースのクエリの実行の仕方

    こんにちは。アべです。 データの処理でリレーショナルデータベースを使用しようとしております。 そこで、台帳(例えば顧客台帳)をマスタ登録して使用するのですが、 下記のことがクエリでは出来ずに困っています。 やり方のヒントでもよろしいので教えていただけないでしょうか? ・過去に戻って、トランザクション処理を再実行する際に過去の その時点の台帳情報を引っ張りたい。 (テーブルに時間指定でクエリを投げる方法がわからない。) ・その台帳の情報を確認したい。 (単純に台帳の過去を知りたい。 トリガで更新処理のログを残す手間なやり方しか思い浮かばない。) 本をみてもリレーショナルデータベースに時間軸の概念がないような 気がしております。 (一応調べて見て、スナップショットデータベースがあり、これだと ある特定の時点しか取れず、しかも事前に用意しておかなければならず、 いまいち今回のパターンだと使えないと考えています。) 環境 SQL Server 2008 Service Pack 1 宜しくお願い致します。

  • 更新クエリが実行できず、困っています。

    以前こちらで、更新クエリについて教えて頂きましたが、 実行できず、困っています。 在庫クエリで計算した在庫数を、部品マスタの現在庫に代入する 更新クエリを実行すると、 「更新可能なクエリでなければなりません」とエラー表示されます。 UPDATE T_部品マスタ AS A INNER JOIN Q_在庫 AS B ON A.部品品番=B.部品品番 SET A.現在庫 = B.在庫数; と作成しました。 以下に、作成したデータベースを書き出してみます。 どこが悪いのか、ご指摘頂ければ幸いです。 よろしくお願いします。 部品分類テーブル 部品分類ID(主キー) 部品分類名 保管場所テーブル 保管場所ID(主キー) 保管場所 部品マスタテーブル(T_部品マスタ) 部品品番(主キー) 部品分類ID 保管場所ID 部品名 現在庫 入出庫テーブル 入出庫ID(オートナンバー) 日付 部品品番 入庫数量 出庫数量 入出庫テーブルを元にクエリを作る 入庫クエリ 部品品番 入庫数量の合計 出庫クエリ 部品品番 出庫数量の合計 在庫クエリ(Q_在庫) 部品品番(部品テーブル) 部品名(部品テーブル) 入庫数量の合計(入庫クエリ) 出庫数量の合計(出庫クエリ) 在庫数(nz([入庫数量の合計])-nz([出庫数量の合計])

専門家に質問してみよう