• 締切済み

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

みんなの回答

回答No.2

>実行時エラー-2147024894 このエラーはファイルが見つからない場合に出ますね。 可能性として 1・タイプミス 2・Path中にスペースが含まれている "\\~省略~類¥DL_BOPE.bat" を、"""\\~省略~類\DL_BOPE.bat""" に変更 じゃないでしょうか?お試しあれ。 なお、当方のWin7同士やWin7→NAS(Linuxベース)では \\server名\共有名 のUNC名指定でも \\192.168.・・・ のIPアドレス指定でも問題ありませんでした。 ただ、OSからセキュリティの確認メッセージが出てしまいます。 『このファイルの作成者を確認できません。このファイルを実行しますか』 キャンセルすると実行時エラー -2147023673(800704c7) になってしまいます。 Access2010のセキュリティセンターで『安全な場所』に追加しても効果なし。 これはGoogleと http://tunes.sakura.ne.jp/tipi/?Windows%2F%A5%A8%A5%E9%A1%BC%A1%A7%A4%B3%A4%CE%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%BA%EE%C0%AE%BC%D4%A4%F2%B3%CE%C7%A7%A4%C7%A4%AD%A4%DE%A4%BB%A4%F3%A1%A3%A4%B3%A4%CE%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%BC%C2%B9%D4%A4%B7%A4%DE%A4%B9%A4%AB%A1%A9 で回避できました。

  • chie65535
  • ベストアンサー率43% (8525/19382)
回答No.1

>strShellCommand = "\\~省略~類¥DL_BOPE.bat" ' バッチのあるパスとバッチファイルの名前を入れています 「¥¥コンピューター名¥共有名¥フォルダ名¥ファイル名」のようなパスは、Runメソッドで使えないような気がしますが、こういうパス名がRunメソッドで使える事は確認してありますか? 当方は、共有フォルダにあるバッチをいきなり動かすのが出来ないので、HDD内の一時フォルダに @ECHO OFF NET USE Z: /DELETE NET USE Z: \\コンピュータ名\共有名 Z: CD Z:\フォルダ CALL Z:HOGE.BAT って言うバッチを作ってから、2段階で、共有フォルダ内のバッチを起動してます。

関連するQ&A

  • VBAでネットワーク上のバッチジョブを実行したい

    クライアントPCのVBAからサーバなどのネットワーク上のバッチジョブを実行するにはどのようにすればよいでしょうか?   Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run "\\サーバ名\AAAAA\BAT\TEST.bat", , True MsgBox "終了!" Set WshShell = Nothing 上記を参考にしたのですが、どうもうまくいかないのです。 何かが足りないのですか?

  • VBSでバッチを実行できません。

    C:\temp\test.batをVBSで実行しようとするのですが、 何度やっても実行されません。 想像ですが、c:\WINNT\System32\cmd.exeが動いている ようなのですが、肝心のC:\temp\test.batが動きません。 以下のように記述しました。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run ("cmd /c c:\temp\test,0,True") WIN2K、IE6.0の環境です。 どこか記述に誤りでもあるのでしょうか? どうぞよろしくお願いいたします。

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

  • VBScript(WScript)のバッチファイル実行

    お世話になります。 VBScriptで困っています。 ご存知の方、ご教示願えますでしょうか。 Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。 現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。 通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが DOS画面を出さないようにプログラムを組んでいます。 つまり、VBScriptからバッチファイルを実行しております。 以下、VBScriptのソースを記載します。 Set objShell = WScript.CreateObject("WScript.Shell") fcresult = objShell.Run("C:\abc.bat", 0, True) wscript.quit fcresult 上記のVBSを実行すると、必然的に「abc.bat」が実行されます。 しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと) しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると 「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。 周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。 正直、再現が難しいため大変困っております。 お客さんの環境では100%再現されます。 全くもって原因がつかめておりません。 Windowsのセキュリティの設定でしょうか!? ご存知の方いらっしゃいましたら、知恵をお貸しください。 よろしくお願いいたします。

  • vbsからバッチファイル実行時の引数渡しについて

    vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。 CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

  • VBA バッチファイルでコピー出来ない

    以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell(folderB\batch.bat, vbnormalfocus) End sub Batch.batの中身 Copy folderA\fileA . 注:folderAやfolderBはそれぞれのフォルダのフルパスです。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • VBA バッチファイルでコピーできない

    この質問は直近で出した質問を誤って締め切ってしまったため、再質問として書いてます。 以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell("""" & folderB\batch.bat & """", vbnormalfocus) End sub Batch.batの中身 Copy "folderA\fileA" . '見えにくいですが、最後にピリオドがあります。 folderAやfolderBはそれぞれのフォルダのフルパスです。パスに空白を含むため " で囲むようにしてます。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • 外部ファイルを実行するには?

    お世話になります。 vb6で外部のバッチファイルを起動して、それを動作させようとしているのですが、うまくいきません。特にエラーにはならず、一瞬DOSプロントは立ち上がるんですが、バッチ処理しているログにはなにも書き込まれません。普通にバッチファイルをダブルクリックさせるか、コマンドからバッチファイルの入っているフォルダまでいって、バッチファイルを実行すれば書き込まれるのですが。 どこがまちがっているのでしょうか?shellじゃなくて、違う関数を使わなければいけないのでしょうか?ご教授よろしくお願いします。 なお、vb6でテストするときは▸マークの実行を押して、テストしました。 サンプル用のものです。 ↓test 現在の時間をログに記入 ■バッチファイルの中身(test.bat) echo test >> log.txt time/t >> log.txt ■vb6のファイルの中身 Private Sub Command1_Click() Dim ret as long ret = shell("cmd.exe /c C:\test\test.bat",4) End Sub

  • バッチファイルからVBA実行でエラー

    バッチファイルからエクセルのマクロを動かそうとしているのですが、 処理はきちんと動いて処理を行なうのに、エラーウィンドウが出力され ”未知実行時エラーです”(画像添付)となり困っています。 どうすれば、このエラーを無くせますでしょうか? 因みにバッチファイルは以下の通りです。 Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\ne05576\My Documents\Datamove.xls" obj.Application.Run "FileMove" よろしくお願いします。

  • ASPからVBScriptの実行

    ASPから下のVBScriptを実行使用とすると "500"Internal Server Error が出力されて困ってます。 へるぷみー Dim objWSHShell Set objWSHShell=WScript.CreateObject("WScript.Shell") objWSHShell.Run "cscript.exe d:\test.bat" objWSHShell=Nothing