今だけ人気マンガ100円レンタル特集♪

お尋ねします。
Win2000で、コマンドラインからアクセスのファイル(tst.mdb)を起動することはコマンドラインから、START tst.mdb できたのですが、そのファイルを閉じることができません。
立ち上がったそのアクセスファイルを閉じるコマンドは、どのようにすればいいのでしょうか。

よろしくお願いします。

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

A 回答 (3件)

それぞれ単体の処理は正常終了しますか?



【単体】
・バッチ処理のみ
・ファイル終了処理のみ


【結合】
・コマンドからの起動→バッチ処理のみ
・コマンドからの起動→終了処理のみ

・コマンドからの起動→テキトーなメッセージボックスを表示→終了処理
・コマンドからの起動→バッチを使わずに単体データの登録・変更・削除等のクエリ処理→終了処理


これらを試してみてください。
    • good
    • 0
この回答へのお礼

度々お付き合いいただきましてありがとうございます。
sykt1217様のおっしゃる通りに試してみましたところ、どうやら実行しているマシーンに問題があるように思えてきました。
2台のマシーンで同じ処理を実行しました。
Aのマシーン:Win2000
Bのマシーン:XP

AとBのマシーンでアクセスのファイルを作り、マクロに「終了」を登録しましたところ、Bのマシーンでは、正常に処理できたのですが、Aのマシーンでは、やはりメッセージが出ました。
バッチの作りが問題なのではなく、アクセスの問題ですので、再インストールなどして様子を見てみます。
ありがとうございました。

お礼日時:2009/09/01 14:54

>'パス名\ファイル名'が見つかりません。

名前を正しく入力したかどうか確認してから、やり直してください。ファイルを検索するには、「スタート」ボタン~。というメッセージが出てしまいました。

これは怒られているメッセージの通り、パスが間違っているんだと思います。
相対パスではなく、絶対パスでもダメですか?
差支えない程度に補足していただければ、問題点の解決につながるかもしれません。
    • good
    • 0
この回答へのお礼

何度もすみません。
バッチファイルは、以下の通りです。

cd C:\Documents and Settings\kinki\デスクトップ
start tstx.mdb

tstx.mdbのアクセスファイルでAutoExecマクロを組み込んでいます。
AutoExecマクロには、クエリでデータを更新させ、「終了」するようにしており、アクセスを手動で起動すれば、クエリが実行され、アクセスのブックは、閉じます。
しかし、バッチファイルを実行した場合、エラーメッセージが表示されます。それで、AutoExecマクロに組み込んだ「終了」を外し、バッチファイルを実行しますと、正常にクエリが処理され、アクセスが立ち上がったまま、処理は終了し、エラーメッセージはでません。
 「終了」をAutoExecマクロに「終了」を組み込んだ場合に、アクセスのブックを閉じようとして、エラーが出るようです。

お礼日時:2009/09/01 10:31

確かコマンドラインから直接閉じるコマンドはないと思います。


コマンドにtaskkillなどがありますが、これは直接的に「ファイルを閉じる」コマンドではなかったと思います。
【参考ページ】
http://ykr414.com/dos/dos04.html

あとはAccess側から閉じるロジックを作って、処理に互換性を持たせるか・・・。
とは言っても面倒ですよねぇ。。。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうなんですか。

>あとはAccess側から閉じるロジックを作って、処理に互換性を持たせるか・・・。
アクセスのAutoExecマクロで「閉じる」という処理を組み込んだのですが、アクセスの処理は正常に行えているようなのですが、'パス名\ファイル名'が見つかりません。名前を正しく入力したかどうか確認してから、やり直してください。ファイルを検索するには、「スタート」ボタン~。というメッセージが出てしまいました。
アクセスのファイルは閉じているようです。

お礼日時:2009/08/31 17:54

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

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

この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" 'マクロ名

これでどうでしょう。

QShell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

はじめまして。
掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。
その後、そのバッチファイルが終了してログファイルの出力を完了した後に、
ファイルを開いて確認したいのです。
thread.sleepなどで大体このくらいかなという時間を待ってみる、
などのやり方しか今は思いつかないのですが、
何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。

どなたかご存知の方がいらっしゃいましたらご教授ください。

Aベストアンサー

Shell関数より Processクラスで実行したほうが簡単に待てますよ

Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")

といった具合です

QAccessのMDBファイルを自動で最適化する方法

ACCESSで作成したMDBを自動で最適化する方法をご存知方いましたら教えて下さい。
自動で最適化といっても、例えばコマンドラインから対象MDBを最適化できる方法などでも結構です。

理想としては、対象MDBを最適化するBATを作成し、それをタスクのスケジューリングできたらいいなと思っています。

なにか良いヒントでも結構ですので宜しくお願いします。

Aベストアンサー

コマンドライン
msaccess.exe 最適化MDBファイルパス/compact [最適化後MDBファイルパス]

#MSAccessバージョンくらいは明記して欲しいところですね。

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...続きを読む

Q他のMDBのマクロを実行する方法

すみません。急いでいます。
マクロ実行中のMDBファイルから、他のMDBのマクロを実行する方法を教えてください。

Aベストアンサー

急いでいる時ほど説明は正確・詳細のほうが宜しいかと思いますが
取りあえず、こんな風では?

他のMDBファイル名がフルパスで、f:\db_xp\to.mdb
モジュールの中身を
Sub testTo()
  MsgBox "to のtestTo"
End Sub
とします。
ならば
今開いているmdbに下記のように記述すればto.mdb のメッセージ「to のtestTo」が出ます

Sub test()
  Dim acApp As Access.Application
  Set acApp = New Access.Application
  acApp.OpenCurrentDatabase ("f:\db_xp\to.mdb")
  acApp.Run ("testTo")
  'マクロ不可、プロシージャのみ可
  'testToプロシージャの中からDocmd.runMacro "マクロ名"で呼び出し可です
  acApp.CloseCurrentDatabase
  Set acApp = Nothing
End Sub

ただ、testToの内容によっては動かない場合もありえるかと思います。

別案ですが
Startup コマンド ライン オプション を利用して
Shell("msaccess.exe f:\db_xp\to.mdb /x マクロ名")
とすれば、to.mdb が開き『マクロ名』が実行されます。

※実行できるのは、マクロだけでモジュールは不可です。
マクロから実行したいモジュールを指定するなり、マクロの中に、to.mdb の終了処理も
記述するなり工夫して下さい。

※もし、最適化に関する話なら前回のリンク先をよく読めば解決するはずですけど?

急いでいる時ほど説明は正確・詳細のほうが宜しいかと思いますが
取りあえず、こんな風では?

他のMDBファイル名がフルパスで、f:\db_xp\to.mdb
モジュールの中身を
Sub testTo()
  MsgBox "to のtestTo"
End Sub
とします。
ならば
今開いているmdbに下記のように記述すればto.mdb のメッセージ「to のtestTo」が出ます

Sub test()
  Dim acApp As Access.Application
  Set acApp = New Access.Application
  acApp.OpenCurrentDatabase ("f:\db_xp\to.mdb")
  acApp.Run ("testTo"...続きを読む

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

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

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

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

Aベストアンサー

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

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

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

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

Aベストアンサー

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

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

QAccess終了時の最適化が失敗?

Accessで作成したシステムには必ずオプションで「終了時に最適化」を指定しています。最適化の時に一旦、MDBのファイル名がdb1.mdbとかに変わり、次に元のファイル名に戻るのが正常なパターンですが、たまにファイル名が戻らない場合があります。何か対策はありますでしょうか?宜しくお願いします。

Aベストアンサー

私はACCESS2000を使用しています。
最適化するときは次のように注意しています。

(1)コードを閉じてから最適化する。
   ===コードの閉じ方===
   モジュールをデザインで開き、右上内側の閉じるボタンをクリックしてコードを閉じる。灰色の背景が見えるまで全て閉じる。(※1)
   コンパイルする。(コンパイルが通ったら)上書き保存する。AccessDBを閉じる。
   最適化する。
 Access2000になってからコードが開いた状態で最適化やフォームの削除、モジュールの削除をするとDBが壊れるということを経験しました。

(2)AccessDBは閉じてから最適化する。
 Accessウインドウの中にAccessDBが開いている状態で最適化するとちゃんと最適化できないようです。
 Accessウインドウだけが開いた状態から最適化します。

※1)
開いているコードが多すぎて手作業で閉じるのは大変という事でしたら、
コードを閉じる関数を持っています。コメントにご連絡ください。


人気Q&Aランキング