- ベストアンサー
Accessモジュールのインターバル起動
nicotinismの回答
フォームのタイマー時イベントで処理するのが一番楽チンで確実です。
関連するQ&A
- ExcelVBAで、タイマー割り込みって使える?
エクセルのVBAでインターバルタイマーによる定期的なマクロの起動を考えていますが、エクセルにはそのようなコマンドが見当たりません。 ループ処理をしても実現は可能だと思いますが、CPUの独占状態となると思うのですが、Accessのタイマー割り込みみたいなのってエクセルでは実現できないのでしょうか?よろしくお願いいたします
- ベストアンサー
- オフィス系ソフト
- OSとCPUの関係について
Windows(OS)についての質問です。 Windows(OS)がCPUによって制御されているのは分かりました。 例えば,エクスプローラーは,Windowsのアプリケーションだと思いますが, エクスプローラーを起動した時は,エクスプローラーはメモリ上に記憶されて,CPUがメモリにアクセスして,制御が行われるのでしょうか? CPUが,直接ストレージに保存されているWindowsにアクセスするのでしょうか?
- ベストアンサー
- Windows系OS
- AccessからExcel立ち上げ
Access2003で作成したテーブルをExcelに出力し、そのファイルをAccessから開き、罫線や列幅等フォーマットを自動的に整え、表示します。表示中にデータ確認し、印刷等の処理を行い、閉じて、またAccessの操作に戻りたいと思います。 この際、アクセスで設定したエクセルのオブジェクト変数をCloseしてしまうと、エクセル画面が閉じられてしまう為、AccessモジュールでのClose処理を行わないままとなっています。この為か、引き続いて条件を変えてエクセルに出力して、同様の処理を行うと、AccessモジュールからのExcelの自動フォーマット化が行われなくなってしまいます。Accessを再起動すれば、正常に処理できるので、オブジェクト変数のClose未処理が原因と考えています。 このような場合、一般にはどのように処理されているのでしょうか?Excel画面表示後、DoループDoEvents関数で待ち状態とし、ボタン操作でExcel操作の終了を知らせて、オブジェクト変数のClose処理を行えばいいのかと思いますが、一般にはどのように処理されているものなのかご教示下さい。
- ベストアンサー
- その他(データベース)
- Doevents をご教授ください。
VBでシリアルプリンタを制御するアプリケーションを開発しています。 プリンタに状態(ヘッドが開いているとかリボンがないとか)を問い合わせる関数をTimer1_Timer()で呼び出しています。 その関数内、プリンタに問い合わせてからの応答待ちにDo~Loopを使っています。 そのループ内にDoeventsがあります。 プリンタとPCを繋げていると起こらないのですが、繋げてないと、 (1)アプリケーションを終了してもタスクマネージャを覗くとプロセスが残っている (2)デバグしてみるとform.unload()時にTimer1.enabled=falseにしているのにform.unload()が終わるとTimer1.enabled=trueになってしまう (3)(2)の後、Timer1_Timer()に記述したプリンタの状態チェックする関数内のDoeventsに移動して無限ループになってしまう というような現象が起こります。 多分Doeventsの使い方が悪いと思われます。 これを回避する方法を教えてください。
- 締切済み
- Visual Basic
- ループ中にフォームを閉じると、様々な例外が出てしまう・・
お世話になっております。 VB2005を勉強しております。現在、フォームが一枚だけのシンプルなプログラムを作っています。For~Nextのループ内にApplication.DoEvents()と記述して他の操作を受けられるようにしておりますが、その状態でループ中にフォームを閉じると例外が出てしまいます。それにフォームは消えまても、デバッグ中断ボタンを押すまでプログラム自体はは起動したままです。強制定期にループを破棄する方法をご教授ください。または、ループ中でも正常にプログラムを閉じる方法でも結構です。 ループ内の処理によってエラー内容は違いますが、現在はAccess.Violation.Exceptionという例外がでます。下記のように、なんの処理もしないループを作ってみましたが、やはりこれでも違う例外が出ました。 ・その1 For i As Integer = 0 To 1000000000 Application.DoEvents() Next ・その2 For i As Integer = 0 To 1000000000 Application.DoEvents() System.Threading.Thread.Sleep(100) Next ちなみに、フォームのClosingイベントでフラグを立てて、 For i As Integer = 0 To maxInt If flag_closing = True Then Exit For End If Application.DoEvents() Next などとやってみましたが効果がありませんでした。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- PCが重くて重くて
数日前まで問題なかったのですが 突然、なぜか重くなって困っています。 どなたか妙案を教えてください。 エクスプローラを起動して、いろいろとアクセス しているうちに、重くなります。(結構早くなります)。 文字の入力すら時間がかかります PCを見ると、盛んにHDDにアクセスしているみたいだし、 マシンから「ウンー」という音が切れず、PC熱くなっています。 何がなんだかわかりません。 プロセスを見ると、CPU100%の状態です。 「explorer.exe」を削除・再設定して再起動させてみると 正常に戻るが、また、しばらくアクセスすると 上記の状態になってしまいます。 HDが悪いのか、エクスプローラが悪いのか、何か悪いのか ・・・・・解りません。 よろしくお願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
- dxqdpo.exeというプロセスについて
僕の会社用パソコン(デスクトップ)に、上司のUSBを差込み、 USBの中にあるフォルダを開きPC内部のデーターをコピーしました。 そして、USBを正しい方法で抜いた後、パソコンが重くなりました。 一度再起動をかけたのですが、重いままのため、 タスクマネージャーを立ち上げると 「dxqdpo.exe」 というプロセスが CPUの40%以上を占めていました。 どこのサイトを調べてもこのプロセスについては何も表示されず、困っています。 情報をお願いします<(_ _)> 状態 神出鬼没 出ては消え、消えては出るを繰り返す パソコンが重くなり動きにくくなる タスクマネージャーでプロセスを消そうとすると「アクセス拒否」 プロセスツリーの終了をしても消えません。 プロセスエクスプローラーProcess Explorerを開き、そこから Kill Processで消そうとしても「アクセス拒否」となりました 環境 Windows XP
- ベストアンサー
- ウィルス・マルウェア
- karnell32エラー(訂正:EXE間でデータを受け渡し時の~) 2
Public Function gfExecChildProcessAndWait(ByRef frmForm As Form, ByVal strExeFileName As String, _ ByVal blnFlgParentFormUnload As Boolean) As Boolean Dim lngProcessId As Long Dim lngProcessHandle As Long Dim lngWin32apiResultCode As Long Dim lngProcessExitCode As Long On Error GoTo SysErr_gfExecChildProcessAndWait: gfExecChildProcessAndWait = True lngProcessExitCode = 0 ' 実行可能ファイルを起動(コマンドライン引数付き) lngProcessId = Shell(strExeFileName, vbNormalFocus) ' プロセスオブジェクトのハンドルを取得 lngProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, lngProcessId) ' 新しいプロセスを作成できた場合は If lngProcessHandle <> 0 Then '呼び出し元のフォームをアンロード(あるいはHide) If (blnFlgParentFormUnload = True) Then Unload frmForm Else frmForm.Hide End If ' ポーリング Do ' プロセスの終了状態を取得し、モジュールレベル変数に格納 lngWin32apiResultCode = GetExitCodeProcess(lngProcessHandle, lngProcessExitCode) ' オペレーティングシステムに制御を渡す DoEvents Loop While lngProcessExitCode = STILL_ACTIVE ' プロセスが終了していない間ループ Else Call gsLogWrite("gfExecChildProcessAndWait", "プロセスハンドルの取得に失敗しました。") gfExecChildProcessAndWait = False End If ' プロセスオブジェクトのハンドルをクローズ lngWin32apiResultCode = CloseHandle(lngProcessHandle) Exit Function SysErr_gfExecChildProcessAndWait: gfExecChildProcessAndWait = False Exit Function End Function
- 締切済み
- Visual Basic
- 作成したDBを使いたい
SQL Server 2008 Express のマネジメントスタジオで簡単なデータベースとテーブルを作りました。それをVisual Basic 2008 Express で使うためにデータベースエクスプローラで表示させたいのですが表示されません。 なので接続の追加で直接mdfファイルを開こうとしてみると、 「オペレーティングシステムエラー32: プロセスはファイルにアクセスできません。別のプロセスが使用中です。アタッチできませんでした。同じ名前のデータベースが既に存在するか、指定されたファイルを開けないか、UNC 共有に配置されています。」 と表示されます。 初心者なので分かりやすく教えて欲しいです。 よろしくお願いしますm(__m)
- ベストアンサー
- SQL Server
- CPUの異常行動
CPUの異常行動 図1のように、インターネットに接続しているとき(エクスプローラを開いているいない関わらず)CPUが訳もなく定期的にMAXになります。 図2、3のようにexplorer.exeが定期的に暴走しているようです。 またteatimerという不明なプロセスもあります。 図4のような表示が毎回現れるのですが、何回消しても現れます。 spyware.doctorという検出ソフトで spyware.kown.bad.sites application.tracking cookies adware.advertising adware.incredifind の4種が計300個ほど見つかりました。 しかし上のソフトは除去は有料だったためできませんでした。 ウイルススキャンもしましたが異常はありませんでした。 CPUを正常に戻すにはどうしたらよいでしょうか。 ご教授お願いいたします。
- ベストアンサー
- スパイウェア
お礼
タイマー時イベントは使ったことがなかったので、この機会に挑戦してみます。ありがとうございました。