WinXp上で動くVB6SP5/ACCESS2002/Excel2002で構成したシステムをメンテ中です。
VBからACCESSデータを読込み編集後、Excel貼り付けて印刷しています。IOが多い事も原因ですがExcelが利用するCPU使用率が高く、他のアプリケーションの動作を圧迫している模様です。(他が本当に使っていたのかは確認しきれなかったのですが…)
No262230でExcelのCPU使用率の下げ方(優先度を下げる)を見つけたの、事前にExcelを立ち上げてから該当システムを実行してみました。すると別にExcelを起動してしまっており、この方法そのままでは有効ではありませんでした。
どなたか、VBから呼び出し先のアプリケーションのCPU使用率を抑える、又は優先度を下げる方法を教えて下さい。
No.1ベストアンサー
- 回答日時:
これでいかがでしょうか?
Dim hWnd As Long
Dim dwProcessId As Long
Dim hProcess As Long
hWnd = FindWindow("XLMAIN", vbNullString)
GetWindowThreadProcessId hWnd, dwProcessId
'取得
'hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, dwProcessId)
'Debug.Print Hex$(GetPriorityClass(hProcess))
'CloseHandle hProcess
'設定
hProcess = OpenProcess(PROCESS_SET_INFORMATION, False, dwProcessId)
Debug.Print SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS)
CloseHandle hProcess
ウィンドウを探すことができれば、タスクマネージャから、優先度の設定を行ったことと同じことになると思います。
この回答への補足
回答有難うございます。
手順として
1.FindWindow行で該当のウインドウを探し
2.GetWindowTreadProcessID行でIDを取得後、
3.OpenProcess行で優先度を設定
4.プロセスを開放 …でしょうか。
すいません、一応調べてみたのですが定義した変数に収まる値の正確な内容とりうる範囲が良くわからないです(汗)
また、APIの命令が入っている様に思うのですが、これは事前に宣言は不要でしょうか。
No.2
- 回答日時:
手順はいいと思います。
各宣言については、以下を参考にして下さい。
具体的な動作は、APIのヘルプなどの資料を参照して下さい。
あと、APIを使用していますので、強制終了されないように、エラーを処理してください。
(前回の回答はエラー処理を省いていましたので、、、)
またわからないことがあればまた補足して下さい。
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hWnd As Long, _
lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const PROCESS_SET_INFORMATION = &H200
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function GetPriorityClass Lib "kernel32" _
(ByVal hProcess As Long) As Long
Private Declare Function SetPriorityClass Lib "kernel32" _
(ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20
Private Const IDLE_PRIORITY_CLASS = &H40
Private Const HIGH_PRIORITY_CLASS = &H80
Private Const REALTIME_PRIORITY_CLASS = &H100
御礼が遅くなり申し訳有りません。
これ以外の作業との絡みで未だ組み込めてはいないのですが、大変参考になりました。
この正月休みにでも組み込みに挑戦してみます。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード Windows11アップデート後の不具合(メモリ不足)について 9 2023/01/04 11:34
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) [テーマのフォント]、[見出しのフォント]、[本文のフォント]とは何ぞや? 2 2023/02/27 09:18
- モニター・ディスプレイ PCのディスプレイとしてヘッドマウントディスプレイをお使いの方はおられますか? もしおられたら、その 1 2022/09/01 03:46
- Excel(エクセル) 【至急 詳しい方教えて下さい】Excelの表を変換したい 6 2022/04/21 18:35
- Excel(エクセル) マイクロソフトのノートパソコンを使用しているものです。 Excelで練習をしていたところ上下矢印が出 3 2023/03/01 18:29
- CAD・DTP EXCELからAUTOCADに貼り付け 1 2022/04/20 17:42
- Excel(エクセル) Excel のヘルプ文の印刷 1 2023/06/07 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル関数を教えてください
-
UserForm1.Showでエラーになり...
-
エクセルVBA 「On Error GoTo...
-
ACCESS VBAのSplit()関数の使用...
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
ステートメントが見つかりません
-
実行時エラー 438 の解決策をお...
-
VBScriptのエラー処理について
-
「実行時エラー '3167' レコー...
-
JAVA Jasper Report でのQRコー...
-
VBでSQL文のUPDATE構文を使った...
-
マクロで"#N/A"のエラー行を削...
-
お助けください!VBAのファイル...
-
Unityのエラー「Rigidbody.AddF...
-
エクセルVBAで埋め込みグラフ(C...
-
VBスクリプトでIEの404 not fou...
-
ある1人の友達のLINEで、少しの...
-
EXCELのVBAの中でMOD関数を使う...
-
エクセルVBAで#N/Aのようなエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報