出産前後の痔にはご注意!

ACCESSで、
TXTファイルをテーブルにインポートするマクロを作成したのですが、
TXTファイルが毎日更新されるため、毎日自動でマクロを実行させたいと思っています。
ACCESSの機能かWINDOWSの機能ですることは可能なのでしょうか。
ご教授ください

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

A 回答 (3件)

Accessのオプションでアクションクエリの確認メッセージをはずせば、アクションに関するメッセージはでなくなります。



>このファイルに意図的にお使いのコンピュータに損害を与えるコードが含まれる場合、ファイルは安全でない可能性があります
これはおそらくセキュリティに関するメッセージでしょうから、コマンドでは処理できないようにおもいます。
AccessなのでVBAの脆弱性とか考慮されているのでしょう。
対処はちょっとわかりません。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
セキュリティの設定を変更したらメッセージが出なくなりました。
ありがとうございました。

お礼日時:2007/12/11 11:06

少し間違ってました。


ファイルを一つ開くだけならバッチファイルは不要でした。
タスクを作成するときに、プログラムではなく、MDBファイルを選択してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
タスクだけでできるんですね。
勉強になります。
なんども丁寧に回答いただきありがとうございました。

お礼日時:2007/12/11 11:08

MDBを開くバッチファイルを作って、タスクスケジューラでそのバッチファイルを開くように設定します。


マクロ名をAutoexecにすると自動的にマクロを実行します。
バッチファイルの作り方、タスクスケジューラの設定は、長くなるのであえて説明しません。
パソコンを使う上での基礎なのでお調べください。

この回答への補足

コマンドはわかりました。
MDBを開くようになりましたが、マクロの中身がTXTファイルをインポートする前に、一度データ削除するのですが、そのとき、
「データを削除しますか」を聞かれ、「はい」を選択します。
ここもコマンドにすることができるのでしょうか。
また、MDBを開くときに、
「このファイルに意図的にお使いのコンピュータに損害を与えるコードが含まれる場合、ファイルは安全でない可能性があります。」
のメッセージも出ます。
こちらも「開く」を選択しますが、ここもコマンドにすることができるのでしょうか。
きいてばかりで申し訳ありませんが宜しくお願いします。

補足日時:2007/12/11 10:16
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
バッチファイルの作り方、タスクスケジューラの設定はわかりましたが、調べましたが、MDBを開くコマンドがわかりません。
どのようなコマンドなのでしょうか。

お礼日時:2007/12/11 10:10

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

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

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

関連するカテゴリからQ&Aを探す

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

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

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

QMSアクセスのマクロ・モジュールを実行

MSアクセスのマクロ/モジュールを.batバッチファイル、もしくは.vbsのVBスクリプトでキックさせたいと思っています。

こういった方法は可能でしょうか?ぜひ教えて下さい、よろしくお願いします。

Aベストアンサー

Dim AcApp

Set AcApp = CreateObject("Access.Application")

AcApp.visible = true
AcApp.OpenCurrentDatabase "c:\temp\test.mdb" 'ファイル名
AcApp.DoCmd.RunMacro "マクロ1" 'マクロ名

これでどうでしょう。

Qアクセスでファイルを開いたときにマクロ実行しない方法はありますか?

セキュリティレベルが「中」の場合
エクセルなら「マクロを無効にする」「マクロを有効にする」
という選択がありますが
アクセスの場合
「キャンセル」と「開く」しかない為
マクロ実行せずにファイルを開けないです。

もし起動時に実行するとまずいコードを作ってしまった場合
アクセスならファイルを起動すれば
強制的にマクロを実行することになるのでしょうか?

アクセスで
ファイルを起動時にフォームを起動しそれと同時にデータ削除のマクロを組んでしまった場合
ファイルを開くけどマクロ実行しない方法はありますか?

Aベストアンサー

『起動時の設定』(メニューで「ツール(T)→起動時の設定(U)」)や、
『Autoexec』マクロ(この名前で保存したマクロは、通常起動時に
自動的に実行される)を中止させたい、という意味でよろしければ、
Shiftキーを押しながら起動すればOkです。
(「キャンセル」と「開く」で、Shiftキーを予め押した状態にして、
 そのまま「開く」をクリック(またはEnter)を押す:Shiftと同時押し)

なお、こうして起動した場合も、Excelとは違って、Autoexecマクロや
各フォームのVBA/マクロは、それらを開くと起動してしまいますので
ご注意下さい。
(Accessでは、マクロを完全に無効にした状態で開くことはできず、
 あくまで『起動時の設定』と『Autoexec』マクロを無視するだけです)

QAccessからバッチ処理を実施し、作成したデータを取り込む処理

お世話になっております。
題名の件ですが、

▼Accessマクロ
Function EventQuery()

Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run """C:\Documents and Settings\userName\デスクトップ\EventLogAccess\event.bat"""
Set objWSH = Nothing

End Function

上記マクロで、event.batというバッチ処理を実行しております。

▼event.bat
set fname=%DATE:/=%
eventquery /s server /u userName /p passWord /l application /fi "Id eq 8" /fi "Datetime gt 12/04/2009,01:00:00AM" /r 500 /v >%fname%.txt

上記バッチ処理で、2009年12月4日のイベントログ(アプリケーション)の一覧を取得しております。

【質問内容】
eventquery.vbsのオプションでは日付指定しかできないみたいですが、
実行した当日のログ(アプリケーション)を取得したいと考えております。

方法はないでしょうか?
ご教示の程宜しくお願い致します。

お世話になっております。
題名の件ですが、

▼Accessマクロ
Function EventQuery()

Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run """C:\Documents and Settings\userName\デスクトップ\EventLogAccess\event.bat"""
Set objWSH = Nothing

End Function

上記マクロで、event.batというバッチ処理を実行しております。

▼event.bat
set fname=%DATE:/=%
eventquery /s server /u userName /p passWord /l application /f...続きを読む

Aベストアンサー

>>event.bat の 12/04/2009 の部分をパラメータ %1 に変更して
>▼event.bat
>set fname=%DATE:/=%
>eventquery /s server /u userName /p passWord /l application /fi "Id eq 8" /fi "Datetime gt %1,01:00:00AM" /r 500 /v >%fname%.txt
>
>上記のように変更すると、エラーとなりログの取得ができないです。

この文章からですと、

「Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") 」

の部分がされていないのではないか、と思えてしまうのですが・・・。

「Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") 」

の内容を理解されているのかいないのかよくわからないのですが、とりあえず、もう一つ、「Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") 」にせずにできる方法を考えてみました。
コントロールパネルの「地域と言語のオプション」の日付の設定が
YYYY/MM/DD になっている場合ですと、

set fname=%DATE:/=%
FOR /F "tokens=1-3 delims=/ " %%A in ('DATE /T') do SET YYYY=%%A&SET MM=%%B&SET DD=%%C
eventquery /s server /u userName /p passWord /l application /fi "Id eq 8" /fi "Datetime gt %MM%/%DD%/%YYYY%,01:00:00AM" /r 500 /v >%fname%.txt

のようにすると、%MM%/%DD%/%YYYY% が実行した日付に置き換わります。


>%1の意味を教えていただけないでしょうか。

%1 は1番目のパラメータです。
同様に %2 ~ %9 が使用できます。
例えば、
COPY AAA.TXT %1
という内容の BBB.BAT があったとすると
BBB.BAT CCC.TXT
を実行すると BBB.BAT の中で %1 が CCC.TXT に置き換わり、
COPY AAA.TXT CCC.TXT
が実行されます。

>>event.bat の 12/04/2009 の部分をパラメータ %1 に変更して
>▼event.bat
>set fname=%DATE:/=%
>eventquery /s server /u userName /p passWord /l application /fi "Id eq 8" /fi "Datetime gt %1,01:00:00AM" /r 500 /v >%fname%.txt
>
>上記のように変更すると、エラーとなりログの取得ができないです。

この文章からですと、

「Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") 」

の部分がされていないのではないか、と思えてしまうのですが・・・。

「Acc...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccess 別テーブルにある値を抽出条件にしたい

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

Aベストアンサー

SELECT * FROM テーブル1
WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。


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

人気Q&Aランキング