テーブルのみのMDBファイルがあります。(フォームなし)
このMDBファイルを開いたときにマクロ1を実行させるにはどうすればいいでしょうか?
フォームやレホ゜ート以外にもイベントプロシージャーはあるのでしょうか?
もしくは「起動時の設定」で「マクロ1を実行する」ことは可能ですか?
よろしくお願い致します。(ヴァージョン2003)

このQ&Aに関連する最新のQ&A

A 回答 (2件)

No.1です。



> 標準モジュールに

・・・すみません。
AccessよりExcel等の方に慣れている方の場合、「VBA=マクロ」と
思われることが多いというのを忘れていました(汗)

データベースウィンドウ(テーブルやクエリ、フォームなどの一覧が表示
される画面)に、『マクロ』というのがあると思います。
そこで作成する方の『マクロ』で、VBAで組む『モジュール』とは別の
ものになります。
そちらで、『AutoExec』という名前のマクロを作成してください。


※添付画像は、『AutoExec』マクロのデザインビューの例になります。
 (「マクロ1」がSubプロシージャの場合は、戻り値はなくても構わない
  のでとりあえずFunctionプロシージャに変更した上で、
  『AutoExec』マクロの『アクション』欄に「プロシージャの実行」を
  指定し、画面左下でそのプロシージャ名を指定します:
  末尾に「()」(括弧)が必要だったはずなのでご注意のほど)
「アクセス起動時にVBAを実行させるには?」の回答画像2
    • good
    • 0
この回答へのお礼

そっちのマクロですね!
できました!できました!
わざわざご丁寧にありがとうございます。

お礼日時:2009/05/27 23:40

「Autoexec」または「AutoExec」という名前のマクロを作成すると、


そこに記述されたアクションが、起動時に自動的に実行される
ようになります。

ですので、
 a)マクロ1の内容をこちらに転記する
 b)マクロ1の名前を上記の名前に変える
 c)上記のマクロの『アクション』に「マクロの実行」を追加し、
  その『マクロ名』引数に「マクロ1」を指定
のどれかやりやすい方法で対応すれば、Okです。

なお、『起動時の設定』と同様、Shiftキーを押しながら起動した
場合は、このマクロも無視されますので、併せて参考まで。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
しかしうまくいきません。
試しに、b)の方法で
標準モジュールに
Sub AutoExec()
MsgBox "test"
End Sub
としてみましたが
起動時に動きません。
何かおかしいでしょうか?

お礼日時:2009/05/27 22:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qプログラムを一時停止→再起動→続きから再実行

http://okwave.jp/qa3279922.html
の訂正版です。
OSはubuntu、言語はC++を用いております。

Ctrl+Zでプログラムを一時停止できると思いますが、
そのまま再起動すると、もうそのプログラムは一時停止した場所からは
再開できません。
Ctrl+Zは、プログラムのデータ・状態をHDDに書き込んでいるのだと思いますが、そのファイルが、
1.シャットダウンしても消えないようにする
2.再起動後、プログラムを続ける
方法がありましたら、教えてください。

Aベストアンサー

>そうなのですか、ではどのようにしているのでしょうか?

Ctrl+z(サスペンド)によってシグナル(SIGSTOP)をプロセスが受信して、単純にプロセスが停止しているだけ。
なので、プロセスはメモリ上に存在しています。

>1.シャットダウンしても消えないようにする
>2.再起動後、プログラムを続ける
>方法を教えていただけますか。

メモリ上にあるプロセス、データ等をファイルに退避(チェックポイントみたいなの)して、再開したい場合、その退避したファイルからメモリ上に展開(リスタートみたいなの)しなきゃいけないわけで、どうしてもカーネル内部に何かしらの手を加えないと(もしくはそういう機能がないと)出来ないように思うけど。

なのでそういう機能がない場合には、ユーザランドでのプログラミングだけでは無理だと思うのですが。

QAccessで、フォームAからダイアログモードで立ち上げたフォームBを開き、フォームBを閉じた時にフォームA側でマクロを実行したい

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

Aベストアンサー

フォームBの処理
「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?

Q勝手にプログラムが起動します

PCを起動したまま放置していたら
勝手にプログラムが起動されてました。
ウィルスでしょうか?
その後、起動されたプログラムを停止しましたが
まだ、症状はでていません。
OS:WindowsXP

Aベストアンサー

#3で回答した者です。

ノートンなら

「メインウインドウ」→「ウイルススキャン画面」を表示。

「コンピュータをスキャン」→画面右下の「スケジュール」をクリック。

ここで設定が出来たと思います。

http://www.dataeast.co.jp/virus/an5.htm
 
 

参考URL:http://www.dataeast.co.jp/virus/an5.htm

Qアクセス フォーム テーブルを引用し、フォームを作成しました。 投入した結果がテーブルに上書きされま

アクセス フォーム

テーブルを引用し、フォームを作成しました。
投入した結果がテーブルに上書きされません。
設定方法を教えて下さい。
また、投入時は1か0を選択するプルダウンを作りたいのですが、どのように作るのでしょうか?

Aベストアンサー

テーブルの引用とのことですが、それはレコードソースに設定してあるということですか?
各テキストボックス等のコントロールソースも設定してありますか?
プロパティで確認してください。

レコードソース、コントロールソースが分からない場合は、ウィザードを使ってフォームを作りましょう。

Q起動時にスタートするプログラムを削除したい

パソコンを起動した時に自動スタートするウインドウ式のプログラムを停止したい
パソコンの起動が遅くなるため

Aベストアンサー

相談者様へ、
No.1の方の方法で起動してしまう場合は、
○スタートメニューのファイル名を指定して実行をクリック→ファイル名を指定して実行ダイアログボックスで
「msconfig」と入力し、OKボタンをクリック。
→システム構成ユーティリティが起動しますので、
スタートアップタブで起動時に常駐させたくない項目のチェックをはずします。
→設定が終了したら、OKボタンクリック。
それで、再起動すれば、起動されません。

※レジストリーエディタでもできますが、不適切に設定すると、ウィンドウズが壊れることがあります。

Qmdbファイル フォームを開くと強制終了されます。

他の人が別のパソコンで作ったアクセスファイルを開こうとすると強制終了されます。

ファイルをダブルクリックで開くのですが一瞬で閉じてしまいます。

でも、ldbファイルは消えないままです。

当方はアクセス2003を使っていて、
作った人はアクセス2010を使っているのですが
送られてきたアクセスのファイル形式はmdbファイルです。

ファイルを開くと同時にフォームを開く設定をしているので
ソフトキーを押しながらファイルを開くとデータベースウインドウが表示されるのですが
該当のフォームを開こうとすると強制終了されます。
デザインビューで開こうとしても同じです。

標準モジュールから
DoCmd.OpenForm “フォーム名”
をしても、強制終了してしまいます。

quitはないです。

私の方で治すことはできないのでしょうか?

Aベストアンサー

1)そのMDBファイルをどこか別のフォルダにコピー(要はldbが無い環境にする)
2)新規にMDBを作り、「開く」
3)1)のファイルの中身をすべてインポートする

で、3)のファイルを開きなおすとどうなりますか?

QMessengerの自動起動を停止したい

Windows7 起動時に、Messengerが自動的に起動するため、その分OSの起動時間が長くなりますので、自動起動を停止たいのです。
また、このプログラムは業務上不必要なのでアンインストールしたく思いますが、プログラムと機能にはこの項目がなくアンインストールできません。
msnmsgr.exe を削除してもよいでしょうか。

Aベストアンサー

サインイン画面のオンラインの所にオプションがあり、そこのサインインタブの全般の項目で windowsへのログオン時にmessengerを実行する とインターネットへ接続時に自動的にサインインする のチェックを外す

Windows Liveの中にWindows Livemessengerはあるのでアイコンをすべて削除するか インストールしなおすか Windows Livすべて削除するかですね
 Windowsmessengerの場合もmsnmsgr.exeを削除してもいいです

Qコピーしたファイルのマクロを実行すると前のファイルが開く

よろしくお願いします。

 エクセルで2005年度の売上集計ファイルを作りました。一定の条件で並び替えをしたかったので、マクロの自動記録でその[並び替え]を記録しました。それをユーザー設定ボタンとしてツールバーに表示させました(ニコちゃんマーク)。

 そして年度が変わったため、そのファイルをコピーし名前を変えて2006年度として記録を始めたのですが、このマクロを使うと動作は2006年度のファイルに対して動くのですが、なぜか前の2005年度の売上集計ファイルが開きます。
(最初に「マクロを有効にしますか?」と聞いてきます)

 前のファイルが開かないようにして、2006年度のファイルだけでこの並べ替えができるようにするにはどうしたら良いでしょうか?

 よろしくお願いします。

ThinkPad X40
OS: WinXP SP2
Excel: 2003 SP2

Aベストアンサー

こんばんは。

>ユーザー設定ボタンとしてツールバーに表示させました(ニコちゃんマーク)

一般的に、このようにした時は、そのマクロは、個人用マクロブック(PERSONAL.XLS)の標準モジュールに書き込み、それを、[ユーザー設定]-[コマンド(タブ)]-[選択したボタンの編集]-[マクロの登録]で、設定をしなおします。

ボタンなどのグローバルな場所(ツールバーなど)に設定されたマクロは、一般のブックに登録すると、常に、そのブックが呼び出されることになります。

QWindows Live Messengerの自動起動の停止方法

新しくWindows Vistaのパソコンを購入したのですが、Windows Live Messengerなるプログラムが勝手に起動します。私は、Windows Live IDを取得するつもりはないので、邪魔で困っています。
自動起動を停止するにはどうすればよいのでしょうか?

Aベストアンサー

Messengerの右上の▼を押してメニューを表示しまして、
「ツール」→「オプション」の中の左の欄から「サインイン」を
選択します。
「全般」の一番上に「Windowsへのログオン時に Windows Live Messenger
を実行する」というところにチェックが付いていると思いますので
これを外しますと、次回起動時から自動起動しなくなります。

Qマクロ実行時、ユーザーフォームにラベルのテキストが表示されません。

エクセル2003VBAで、マクロ実行時にユーザーフォームを
モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。
しかし、処理が追いついていないのか、そのラベルが表示されません。
ユーザーフォームにはコードを記述していません。コードは以下のみです。
UserForm1.Show vbModeless

テキストをTrueにしてからマクロ処理のようなコードがあるのでしょうか?
お手数をおかけしますが、解決方法をご存知の方よろしくお願いいたします。

Aベストアンサー

こんにちは。

>モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。

ラベルをどう処理しているのか、まったく書いていないわけで、さっはり意味が分かりません。

UserForm が立ち上がっている状態では、「マクロ実行中」とは言えるかもしれませんが、表示する意味はないはずです。

Private Sub UserForm_Initialize()
 Label1.Caption = "マクロ実行中です....."
End Sub

必要ないと思います。
たとえば、ループした場合は以下のようにします。

Private Sub CommandButton1_Click()
  Dim i As Long
  Label1.Caption = "マクロ実行中です....."
  DoEvents 'これを入れないと表示しない。
  Do: i = i + 1: Loop Until i > 10 ^ 7
  Label1.Caption = "終了"
End Sub

3~4秒で終了するはずですが、一旦、何かVBAをあらかじめ動かして、オブジェクトが活性化しないと、それ以上に時間が掛かる可能性があります。

なお、この仕様は、Office VBA独特のようです。

こんにちは。

>モードレス表示して、そのユーザーフォームにラベル「マクロ実行中です・・・」を貼り付けています。

ラベルをどう処理しているのか、まったく書いていないわけで、さっはり意味が分かりません。

UserForm が立ち上がっている状態では、「マクロ実行中」とは言えるかもしれませんが、表示する意味はないはずです。

Private Sub UserForm_Initialize()
 Label1.Caption = "マクロ実行中です....."
End Sub

必要ないと思います。
たとえば、ループした場合は以下のようにします。
...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報