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

このQ&Aのポイント
  • Accessからバッチ処理を使用してデータを取り込む方法について教えてください。
  • バッチ処理を実行して作成したデータをAccessで取り込む方法を教えてください。
  • Accessでバッチ処理したデータを取り込む手順について教えてください。
回答を見る
  • ベストアンサー

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

お世話になっております。 題名の件ですが、 ▼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のオプションでは日付指定しかできないみたいですが、 実行した当日のログ(アプリケーション)を取得したいと考えております。 方法はないでしょうか? ご教示の程宜しくお願い致します。

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

  • ベストアンサー
回答No.2

>>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 が実行されます。

eventq
質問者

お礼

>「Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") 」 >の部分がされていないのではないか、と思えてしまうのですが・・・。 仰るとおりでした。すいません。 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)

回答No.1

event.bat の 12/04/2009 の部分をパラメータ %1 に変更して、Access で 実行する .Run の内容を "~\event.bat" & Format(Date,"mm/dd/yyyy") みたいな形にするのが手っ取り早いのではないかと思います。 (eventquery.vbsを元に当日分のみを出力するvbsを作ってもいいかもしれないですね)

eventq
質問者

補足

tsukasa-12r様 ご回答ありがうございます。 >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 上記のように変更すると、エラーとなりログの取得ができないです。 【エラー内容】 エラー: 指定した 'DATETIME' 形式は無効です。形式: 月/日/年、時:分:秒AM(/PM) (2 桁の数字で指定、年は 4 桁指定可能) %1の意味を教えていただけないでしょうか。 宜しくお願い致します。

関連するQ&A

  • Accessからバッチファイルを実行したい

    accessのVBAで、フォルダ内にあるバッチファイルを実行したいのですが、 このサイトを参考につくってみたのですが、うまくいきません。 http://blog.s21g.com/articles/1202 「実行時エラー-2147024894 Runメソッドは失敗しました。'IWshShell3'オブジェクト」 とでます。 どうしたらいいか教えてください。。。 ちなみに、そのバッチは単純にCSVを他の格納先から、ダウンロードするだけの単純なバッチです。 ------------- Private Sub バッチ実行_Click() Dim strShellCommand As String Dim objWSH As Object strShellCommand = "\\~省略~類¥DL_BOPE.bat" ' バッチのあるパスとバッチファイルの名前を入れています Set objWSH = CreateObject("WScript.Shell") objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行 Set objWSH = Nothing End Sub

  • eventquery.vbsとバッチの使い方について教えて下さい。

    初めての投稿致します。 よろしくお願いします。 現在Windows2003 Server SP2 R2(ENG)の環境のサーバーのイベントログを取得したいと思っており、eventquery.vbsを使用してバッチを作成しているのですが、下記点が突破できずにいます。 どのように改善したらよいか教えて頂けますでしょうか? やりたいこと ・月曜日に実行するときには金曜日、土曜日、日曜日分のイベント(エラー、警告)を取得したい。 ・火曜日、水曜日、木曜日、金曜日は1日前のイベントを取得したい。 現在は単純に全てのイベント(エラー、警告)を取得する。だけのバッチファイルしか作成出来ておりません。 下記のようなバッチです。 ------------------------------------------------------------ @echo on @REM ------------------------------- 日時 SET YYYYMMDD=%date:~-10,4%%date:~-5,2%%date:~-2,2% SET HHMM=%time:~0,2%%time:~3,2% SET FNAME=%YYYYMMDD: =%_%HHMM: =0% @REM ------------------------------- ホスト/出力先、出力ログファイル SET VBSP=c:\windows\system32\eventquery.vbs SET H1=server1 SET LOG=C:\command\%FNAME%_Event_log.csv @REM ------------------------------- 実行日時 @echo %date% %Time:~0,5% に実行しました。> %LOG% @REM ------------------------------- server1出力結果 cscript %VBSP% /s %H1% /fi "type eq warning" /l system /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq Error" /l system /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq warning" /l application /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq Error" /l application /fo csv /v >> %LOG% どのようにすればよいのでしょうか? お手数ですが、ご教授お願い致します。

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • バッチファイル 戻り値

    いつも大変御世話になっております。 WindowsVISTA環境で以下バッチ【ABC.bat】が稼動します。 "ABC.bat"------------------------------------------------- @ECHO ON set bat_name="ABC.bat" call DEF.bat echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 "ABC.bat"------------------------------------------------- 上記バッチの構文では以下バッチDEF.batを起動させ、ERRORLEVELを取得させます。 "DEF.bat"------------------------------------------------- @ECHO ON set bat_name="DEF.bat" exit /b 10 "DEF.bat"------------------------------------------------- 実行結果は予想していたものと違っていました。 予想していた実行結果 : "ABC.bat" は戻り値 10 を受け取りました。 実際の実行結果     : "DEF.bat" は戻り値 10 を受け取りました。】 %ERRORLEVEL%のみを取得したかったのですが DEF.bat の set bat_name="DEF.bat" までも取得してしまいました。 bat_name はどうしても "ABC.bat"とCALLする側の変数を使用したいのですが 制御は難しいでしょうか? echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 の直前に 再度 set bat_name="ABC.bat" と記述しなければダメでしょうか? 尚、都合上、ECHO文と変数名は変えたくありません。 もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • バッチ処理でAcess処理終了後にメッセージがでるのはなぜですか?

    バッチファイルで、Access2000のマクロ「AutoExec」を起動させて処理をおこないたいのですが、 「AutoExec」の処理が終了し、Accessが終了すると、以下のメッセージボックスが表示されてしまいます。 メッセージボックスの内容 「'C\xxx.mdb'がみつかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ファイルを検索するには、「スタート」ボタンをクリックしてから、[検索]をクリックしてください。」 Access2000は、該当のディレクトリに、置いていますし、 ちゃんとAccess2000のマクロ「AutoExec」の処理は実行されています。 Access2000の処理は、正常に終了しているのに、こんなメッセージが表示されては、 意味がありません。 このAccess2000の「AutoExec」のバッチ処理は、何十個もあるバッチ処理の一部です。 バッチ処理の途中でメッセージが出るとその後自働で、行われる予定のバッチ処理が、 行われないので非常に困ってます。 どうしたらよいですか? とにかく、バッチ処理で、Access2000を起動させ、マクロ「AutoExec」を使用して処理を行いたいのです。 その間、どんなことがあっても、メッセージボックスの表示などで、処理を止めてはならないのです。 お願いします。誰か教えてください。 バッチファイル名(このバッチファイルの次に、Access2000とは、無関係のバッチファイルの処理がたくさんあります) xxx.bat バッチファイルの内容 CALL c:\yyy.mdb(又は、startc:\yyy.mdb)

  • バッチ処理で IMEの辞書をコピーする方法

    こんにちは。 USBで辞書を持ち歩くために、バッチ処理をしようと思っています。 教えていただけたら幸いです。 方法 1.辞書:パソコン→USB.bat に次のように書く copy C:\Documents and Settings\%USERNAME%\Application data\Microsoft\IMJP8_1\imjp81u.dic E:\USBjisho\ 2.辞書をコピーしたいときに辞書:パソコン→USB.bat を実行 すると、辞書がパソコンからUSBにコピーされると思うんです。 でも、うまくできないんですよ。 MS-DOSプロントには次の二段に分けて書くとコピーができます。 cd C:\Documents and Settings\%USERNAME%\Application Data\Microsoft\IMJP8_1\ copy imjp81u.dic E:\USBjisho\ どうしたら、いいんでしょうか。 バッチ処理初心者に教えていただけるとうれしいです。

  • エクセルVBAで、バッチ処理を起動すると・・・

    Windows/XP/pro、エクセル2002 使用です。 c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。 参考URL http://www.ponko2.com/ftp_bat.html この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか? Sub test() Dim str As Variant str = Shell("c:\autocsv\auto.bat", vbNormalFocus) Application.Wait Now + TimeValue("00:00:10") End Sub (VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません) なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。 お手数ですが、ご指導いただけますようお願いします。

  • 実行ファイルからバッチファイルを作成、そのバッチファイルが実行できない

    環境はWindowsXPPro+gccです Cの実行ファイルにjavaファイルを引数で渡し そのファイル名に合ったバッチファイルを作成するプログラムで 作成後エクスプローラからバッチファイルを実行しても 「指定されたデバイス、パス、またはファイルにアクセスできません。アクセス許可がない可能性があります。」 と出てバッチを実行できません しかし、DOSを開き、そのパスまで行きバッチファイルを実行するか、 このバッチファイルをコピーし実行するときちんと実行されます。 なぜでしょうか? なにかお気づきする点がありましたら指摘お願いします。 ※文字数制限で宣言省いています int main(int argc,char *argv[]) { strcpy(fpath,argv[1]); flen=strlen(fpath); strncat(ftype,&fpath[flen-5],5); if(strcmp(ftype,".java")!=0){ printf("Don'tjavafiletype!!\n"); printf("%s",ftype); return0; } for(i=0;i<flen;i++){ if(fpath[i]=='\\'){ flast=i; } } strncat(fname,&fpath[flast+1],flen-flast-6); strncat(fpath2,fpath,flen-5-strlen(fname)); sprintf(html,"<html>\n" "<body>\n" "<appletcode=\"%s.class\" width=\"200\" height=\"200\"></applet>\n" "</body>\n" "</html>\n",fname); sprintf(bat,"cd%s\n" "javac %s.java\n" "appletviewer %s.html\n",fpath2,fname,fname); strcpy(fhtml,fpath2); strcat(fhtml,fname); strcat(fhtml,".html"); fn=fopen(fhtml,"w"); flen=strlen(html); for(i=0;i<flen;i++){ fputc(html[i],fn); } fclose(fn); strcpy(fbat,fpath2); strcat(fbat,fname); strcat(fbat,".bat"); fn2=fopen(fbat,"w"); flen=strlen(bat); for(i=0;i<flen;i++){ fputc(bat[i],fn); } fclose(fn2); return0; }

  • 【初心者】バッチファイルの作成方法について

    Windowsバッチファイルの作成方法について質問させて下さい。 以下の処理を行うバッチファイルの作成を考えています。 ・C:\Program Files\Microsoft Visual Studio 8\VCへ移動 ・上記フォルダ内にある vcvarsall.batファイルを実行 ・C:\Program Files\Microsoft Platform SDKへ移動 ・上記フォルダ内にある SetEnv.cmdファイルを実行 ・Cドライブ直下(C:\)へ移動 目的としては、「Microsoft Visual C++2005」の環境設定ファイルを バッチファイルにて一括実行することです。 実際に自分で作成したバッチファイル(setenv.bat)の内容は 以下のとおりです。 ---------------------------------------------------------- @echo off echo setenv.batを実行します cd C:\Program Files\Microsoft Visual Studio 8\VC echo vcvarsall.batを実行して環境設定をおこないます vcvarsall.bat cd C:\Program Files\Microsoft Platform SDK echo SetEnv.cmdを実行して環境設定をおこないます SetEnv.cmd cd C:\ ---------------------------------------------------------- [実行結果] C:\>setenv.bat setenv.batを実行します vcvarsall.batを実行して環境変数を設定します Setting environment for using Microsoft Visual Studio 2005 x86 tools. 実行結果のとおり、setenv.batの実行までしか処理が行われず、 vcvasall.batは実行されません。 原因と対処方法について、どなたか教えて頂けませんでしょうか?

  • バッチからファイル作成をするときに困っています

    リダイレクトで、バッチからファイルを作っています。 部分的ですが、元のバッチは下記のようなバッチです。 ECHO SET /P U-ID="社員番号:" >AA.BAT ECHO net user %U-ID% >>AA.BAT できたファイルで、社員番号をユーザに入力させ、net user で表示させるものです。 ただ、これを実行すると、下記のようなファイル内容になってしまいます。 SET /P U-ID="社員番号:" >AA.BAT net user >>AA.BAT (%U-ID%の部分が消えてしまう) これを回避し、作成したファイル内容が SET /P U-ID="社員番号:" >AA.BAT net user %U-ID% >>AA.BAT となるようにする方法はありませんでしょうか? 知識不足で申し訳ないですが、回避策が見つかりませんでしたので、ご教授願えれば幸いです。 よろしくお願いします。

専門家に質問してみよう