• ベストアンサー

この方法で固まるのを回避できる?

アクセスにコマンドボタンをつけて、ボタンを押すとFileSystemObjectでファイル操作をするのですが その間アクセスがフリーズというか、実行中のため動くことができません。 このような場合、 VBSで同じ操作を作り、アクセスのコマンドボタンを押下→ Shell "WScript.exe で、vbs実行 をした場合、 アクセスにコマンドボタンを押してもアクセスは固まらずに処理が実行できるのでしょうか?

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

>処理が実行できるのでしょうか? やってみなはれ! ただ、Shell では非同期的に実行されるので 『FileSystemObjectでファイル操作』のあとに なにか別の処理が続いている場合は、 『FileSystemObjectでファイル操作』が正常終了したかの判断を する必要があります。 なので、その場合Accessは待機状態にならざるを得ないかと。

cqydaaoeixo
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBSファイルを定期的に自動実行する方法

    毎日同時刻に下記のVBSファイルを自動実行したいと思います。 タスクスケジューラで実行すると download.exe は起動しますが 表示されたダイアログがアクティブ状態にならないため (タイトルバーが灰色のまま、タスクバーのボタンが点滅)、 文字入力ができないまま、処理が終了してしまいます。 1.ダイアログをアクティブにし、正常に処理を実行させるには   どのように記述すれば良いですか? 2.このVBSファイルをユーザーがログオフされている状態で   実行することは可能ですか? 恐れ入りますが、ご存じの方がおられましたら、ご教示願います。 <環境> Windows 2008 Server R2 standard (64ビット) <D:\aaa.vbs> Set objShell = WScript.CreateObject("WScript.Shell") 'ダウンロードEXEを実行 Set objExec = objShell.Exec("D:\download.exe") WScript.Sleep 1000 objShell.AppActivate(objExec.ProcessID) 'ファイルのダウンロード先を指定し、実行(ENTER) WScript.Sleep 1000 objShell.SendKeys "D:\data.txt~"

  • VBSCRIPTでcmd命令(dir)を実行させて

    パスはcsvファイルで読みこんで、vbs上で Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /C ""dir \¥xxx\xxxxx\xxxxx" を実行させてアクセスできなかったパスがぞんざいするならエラーで返して続いて実行してほしいです。 それで最後にログにエラー情報を書く処理をおこないたいです。問題はcmdだとecho %errorlevel%これを使えば すぐにこげたことを1か0で返してくれますが vbs上でも可能ですか?

  • CScript vbsファイル実行 途中で止めたい

    Cscript でVBSファイルを実行するとコマンドプロンプトの画面が立ち上がって処理がはじまりますが、 実行中にEnterキーをおさないと次の処理にいかないように、プログラムを書きたいのですが、 書き方わかる方いらっしゃいましたら、教えてください。Enterキーでなくても構いません。 例えばaaa.vbsの中で、大きく二つ処理があって、(1)の処理→(2)の処理の順番だった時に (1)の処理→(コマンドプロンプト上で)止める、自分でなにかボタン押す→(2)の処理みたいな感じにしたいと思っています。 自分が試したのが、以下です、駄目でした。 WScript.StdInを使ったのですが、これを一度使った後に、Wscript.Echoを使うと、 次のWScript.StdInが使えなくて意味がありませんでした。 WScript.StdIn(入力表示されてとまった) → Wscript.Echo "テスト" →WScript.StdIn(入力表示なく、とまらない)

  • VBScriptでPing

    ネットワーク上の複数のアドレスにPingを打ってその応答によって 処理を分岐させるプログラムをVBSで作成しているのですが、 実行するたびにコマンドプロンプトが開いたり閉じたりして 何か嫌なんですが、仕方ないのでしょうか? 方法としてはWScript.ShellでPingコマンドを実行してます。 ループしながら処理を分岐させているのでコマンドプロンプトが 開いたり閉じたりしてしまいます。 何かよい解決方法はないのでしょうか? どなたかご教授ください。 または参考サイトなど教えてください、お願い致します。

  • wshで起動したコマンドををタイムアウト終了させる

    たとえば以下のようなバッチファイルとvbsファイルを用意して test.batを実行した場合 ftpのダウンロード処理が完了した後 ダウンロードしたファイルを処理したいのです 以下のようにすれば処理待ちになるのでそこは 実現できるのですが ftp.exeがなんらかの原因で稀に終了しない事があるので そうなるといつまでも処理待ちになってしまうので タイムアウトさせたいのです ftpコマンドをあえてquitしないで(終了しない状態を再現させる) WScript.timeout=10 をいれてみて試してみたのですが タイムアウトが有効になりません ftpのプロセスは最悪残ってしまってもかまわないのですが 起動をかけたバッチファイルのほうは永遠待ち状態ではなく 一定時間応答がなければ次の処理に移したいのです 何かいいタイムアウトの実装方法はないでしょうか? アドバイスお願い致します test.bat cscript test.vbs ←ここでftp.exeが終了しないと永遠待ち状態になってしまう rem ftpが完了後に行いたい処理 exit test.vbs WScript.timeout=10 CreateObject("WScript.Shell").Run "CMD.exe /C ftp -s:c:\cmd.txt", 1, True

  • VBSについて

    VBSの中でDOSのコマンドを実行したいのですが、VBS内で使用した変数を Runで使うことはできないのでしょうか? ################################################ Set WSHShell = CreateObject("WScript.Shell") x = "C:\Documents and Settings\user" WSHShell.Run "cmd.exe /K dir x" ################################################ たとえば上記のようなプログラムを作ったときに最終行のcmd.exeの 実行で変数xを使用したいのですが、可能でしょうか? このまま実行するとコマンドプロンプトの窓が開いて「ファイルが見つかりません」と表示されてしまいます。 何か方法があればご教授ください。よろしくお願いします。

  • VBSでのファイル読込、出力操作について

    いつもありがとうございます。 掲題の件について、ご教授頂けますでしょうか。 下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み 『test.vbs』にファイル名分のコマンドを書き込みしたいです。 例) ----------------------------- start.vbs (作成途中) ----------------------------- Set objWShell = CreateObject("wscript.shell") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False) ' 出力先ファイル Set objVBSFile = objFSO.CreateTextFile(c:\test.vbs, True) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objFile.AtEndOfStream objVBSFile.WriteLine(objFile.ReadLine) Loop End If ----------------------------- a.txt ----------------------------- adobe.exe photoshop.exe ****.exe    ・    ・    ・ ------------------------------ start.vbs ------------------------------ objWShell.Run "cmd.exe c:\adobe.exe ", 0, True objWShell.Run "cmd.exe c:\photoshop.exe ", 0, True objWShell.Run "cmd.exe c:\****.exe ", 0, True    ・    ・    ・ vbsをサイトを参考にして作ってはいるものの、start.vbsを実行すると a.txtのファイル名をvbsに書き込むのが限界です。 少しずつ勉強していくのですが、本件少し早めに作りたいという背景があり ご教授頂けませんでしょうか。 また、わかりにくい説明となっておりますが どうぞ宜しくお願い致します。

  • ダブルコーテーションで3度も囲ってるのですが

    vbsで電卓を起動する時 Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run """CALC.EXE""" のように、CALC.EXEをダブルコーテーションで3度も囲ってるのですがなんででしょうか? VBAの場合は Sub test() Dim i As Long i = Shell("CALC.EXE") End Sub のように3重には囲わなくても起動します。

  • PowerShellでExcel画面を最前面に

    PowerShellを使いExcel操作の方法を勉強しております。別のソフトからPowerShellのコマンドをps1ファイルにエクスポートしスクリプトを実行することによりExcelを開いたり閉じたり等の簡単な操作までは出来るのですが、Excelがアクティブになっているにもかかわらずスクリプトを実行したプログラムの後ろになったままです。2つだけの場合実行プログラムを最小化するように設定すればどうにかExcelだけがウィンドウに残るのでなんとかなるのですが、他のプログラムも同時に実行している場合後ろになったままです。 VBScriptの場合 Createobject("WScript.Shell").AppActivate("VBS_01.xlsx") で最前面になりますがPowerShellの場合どうすれば出来るのか御教示お願いします。

  • 「UNCパスはサポートされません」の回避方法

    VBSを作成していますが、下記のようにエラーとなります。 このVBSファイルは、ネットワークファイルサーバー上に置き、実行しています。 自分のパソコンのディスク内にVBSファイルを置き、実行すると、エラーにはなりません。 サーバー上にファイルを置く理由は、社内のどのパソコンからでも実行出来るようにしたいからです。 ネットワークのフォルダを「P」ドライブへ割り当てています。 しかし、\\Comdoc\work\My Documents\SETUP\win2000とサーバー名称を指定しても同じエラーが返されます。 「UNCパスはサポートされません」とありますが、どのように書き直したら良いのかその方法がありましたら教えてください。 Windows2000です。 --エラー内容-- 現在のディレクトリのパスとして '\\Comdoc\work\My Documents\SETUP\win2000' で CMD.EXE を開始しました。UNC パスはサポートされません。Windows ディレクトリを使用します。 --プログラム内容-- Dim WSH Set WSH = WScript.CreateObject("WScript.Shell") prnad prnabat Sub prnad() exeStr = "regsvr32 /s C:\setup\netmgmt\prnadmin.dll" set oExec = WSH.exec(exeStr) Do While oExec.Status = 0 WScript.Sleep 100 Loop End Sub Sub prnabat() spath = """P:\My Documents\SETUP\win2000""" WSH.Run "cmd /k spath & addprn.bat" End Sub

PCの充電ができない問題について
このQ&Aのポイント
  • ノート型PCの充電ができず、シャットダウンしてしまった経験があります。
  • 充電器やバッテリーを交換しても問題は解決しませんでした。
  • 修理に頼む以外に自分で解決する方法はあるのでしょうか?
回答を見る

専門家に質問してみよう