生産設備のオンラインモニタを、VBAで開発中です。
インスタンス1:対OPCサーバー通信/Data取得/CSV-File生成
インスタンス2:CSV-File生成監視→モニタ処理
の構成で、各処理の確認を終了し、結合連続トライに入りましたが、『この操作を完了・・・メモリが不足しています。・・・・』が発生。
ネット情報対応を探ると Set obj*** =Nothing (済)、今後はSet obj = CreateObject(":::::")にに/obj.Quit ←これの追加、obj*1.obj*2.obj*3=#### →Dim obj*1 as ////, Dim obj*2 as &&化等々の対応を取って行く予定です。
その際の対応の効果を確認したく、エクセルメモリの使用状況を確認しようとしましたが、Application.MemoryTotal/.MemoryUsed/.MemoryFree は使用不可との事。
代替え手段を探り「実験ですお」さんのhttps://needtec.exblog.jp/21156344/ の処理にたどり着き、実行の結果として
Caption:EXCEL.EXE
CommandLine:"C:\Program Files\Microsoft Office\Office16\EXCEL.EXE"
CreationClassName:Win32_Process
CreationDate:20191127113451.903141+540
':
WriteOperationCount:510
WriteTransferCount:389313
全45項目の取得はできましたが・・・・
どれが、MemoryTotal/.MemoryUsed/.MemoryFree の事なのか理解できません。
出力項目のどれが、MemoryTotal/.MemoryUsed/.MemoryFree に相当するのか教えていただきたい。
No.2
- 回答日時:
長らく放置状態なので、表題について調べてみました。
こちらのプロセスエクスプローラーは、いかがでしょうか。
https://docs.microsoft.com/ja-jp/sysinternals/do …
Excelがメモリースタックするまでは、試していませんが、なかなか使えそうですよ。
No.3
- 回答日時:
#2です
出所が、docs.microsoft.comなので問題ないと思いますが、使用は、自己責任で行ってください。
英語なので判れば良いのですが、、
ダウンロードしたZipを解凍 procexp.exe を実行すればOK?
対象のExcelブックを起動、、エクスプローラの左にExcelが出現、アイコンをダブルクリックで
Propertiesダイアログが出現します。PerfomanceタグでMemoryなどを確認します。
他にあるタグや他のアプリ、PCの状況も閲覧できなかなかです。
No.4
- 回答日時:
先のツールは、値の取得は出来ないようですね。
ご質問に戻ると
>どれが、MemoryTotal/.MemoryUsed/.MemoryFree の事なのか理解できません。
>出力項目のどれが、MemoryTotal/.MemoryUsed/.MemoryFree に相当するのか教えていただきたい。
出力項目すべてを掲示した方が、良いと思いますよ。(肝心なところが・・なので)
>代替え手段を模索
回答もあまりつかず、情報も少ないので、より、具体的な情報を添えて
Msdn VBAフォーラムなども参考にされてはいかがでしょう。
https://social.msdn.microsoft.com/Forums/ja-JP/h …
+usも
また、メモリー、APIなどの情報であれば、待つより、https://docs.microsoft.com/ などで探す方が早いかもしれません。
ツールでは、実際に数値を表示できるので、取得方法のみですね。
先に挙げたツールも該当フォーラムが存在しており、先のアプリケーションから処理負荷を取得する方法などもあるかも知れません。
余談ですが
>この操作を完了・・・メモリが不足しています。
これが、目的と存じますが、ストレートにメモリスタック対策(すべて)を講じる方が目的に早く到達できると思いますよ。
そもそもですが、生産設備のオンラインモニタを、VBAで開発中。。。生産設備系ならVisualBasicは聞きますが
オンラインモニタでVBA、どうでしょうか?再起動は?
あと少しのところまで来ているようですので、
検討を祈ります。
No.5ベストアンサー
- 回答日時:
>VBAオンラインMoniterやはり無理が
私はそう思います。Officeは起動して処理を繰り返すとプログラム内のオブジェクトなどを解放してもメモリリソースは徐々に増加します。
再起動せずにプログラム上のリソースを解放するプログラムだけでは、オブジェクトの大きさや回数によりますが、いずれスタックするのは
避けられないと思いますよ。(24時間フルタイムなら)
インスタンス1⇒Vbs⇒インスタンス2 大変そうですが、リスクは軽減されますね。
Msdn/VBAフォーラム敷居高くありませんよ、だれでも初めてはありますし、アドバイスをもらう気持ちならOKかと。
古くから生産設備系で使用されているのは、やはりCやC++ですね。
勧めるわけではありませんが、先駆者がVB系同様に多く、情報も多いので良いかもしれませんね。また、Visual Studioなどもあるので
比較的よいかな、互換性制御機器も多いですし。?? 学習となるとどうでしょう、今の時代疑問は残りますが。。(個人的に)
検討を祈ります。
お付き合いありがとうございました。
一先ず6時間連続までたどり着きました、ここまでくればエラー発生時はマニュアル再起動であきらめて、なんとかなるかと・・・・。
課題であったエクセルメモリの使用状況確認ができていないので、何が効果が有ったのか?ですが、感じとしては「非暗黙参照化」が効いたのかな・・・?
ソフト屋さんにもメール相談掛けましたが、汎用言語との合せ技対処、エクセルVBAの造りの見直し対処、・・・いろいろで、結局何が有効なのかは?のまま。
???ばかりが積み上がる結果です、このレベルでの情報量の少なさも含め、ここらへんがVBAの限界なのかと考えますが・・・・。
エクセルのセルDataを配列と考えれば、汎用言語への置き換えも考えられますが、モニタの解析ロジックがまだ試行錯誤要素もあり、エクセルのセル表示の確認の容易さ/変更の容易さ・・・等々を考えると、やはりスタートはエクセルVBAしかないかと・・・、悩ましいところです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAのコードで Dim Obj As AccessObject でコンパイルエラーがでます。 「ユ 2 2022/07/01 06:57
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
メモリの消費量について
Visual Basic(VBA)
-
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
-
4
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
Excel(エクセル)
-
5
DoEventsが必要な理由について
Visual Basic(VBA)
-
6
Excel VBAが徐々に遅くなる
Excel(エクセル)
-
7
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
8
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
メモリの解放の仕方
Visual Basic(VBA)
-
11
メモリが不足しています(VBA)
Visual Basic(VBA)
-
12
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
13
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
14
配列をEraseしてもメモリが開放されていない?
Visual Basic(VBA)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
vba メモリーリーク
Visual Basic(VBA)
-
17
VBで構造体を使うさ際の64k制限の回避方法教えてください。
Visual Basic(VBA)
-
18
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
19
VBAでこんなことできますか?
PowerPoint(パワーポイント)
-
20
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
【C言語】再帰が時間がかかる...
-
マインスイーパ、自動解析プロ...
-
sil_rew_memのメモリアクセスに...
-
大容量のメモリ確保をスワップ...
-
C言語で、メモリを解放しないで...
-
ターボDelphi 独自カーソルの設定
-
メモリ不足
-
メモリのセグメント違反の解決...
-
メモリの解放の仕方
-
メモリの増加に関して
-
ファミコンって8ビットしかない...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
VBAで2進数を返すプログラムの...
-
CImage::ReleaseDC()のエラーで...
-
C,C++プログラムの強制終了時の...
-
ExitProcessの関数コールについ...
-
GPUプログラミング時の表示用GPU
-
スーパーマリオのパワーアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報
ありがとうございました。
dMemoryLoad = MemStat.dwMemoryLoad ' メモリ使用率
:
dAvailPageFile = MemStat.ullAvailPageFile ' 現在ページング可能なファイルサイズ
dTotalVirtual = MemStat.ullTotalVirtual ' 現在使用可能な仮想メモリ
を使用して、モニタLogでシステムメモリ(リソース)を見ていますが、使用量に大きな変動ないのに「メモリエラー発生」しています。
エクセルに割り当てられたメモリの消費状況が見れるものと考え、Application.MemoryTotal/.MemoryUsed/.MemoryFree の代替え手段を模索中です。
ありがとうございます、試してみました。
通常見なれているエクセルVBAの世界からシステムの深い深い井戸の中を覗くような様な感じですね(恐ろしい・・・)、しかも英語・・・。
中にExcel.EXEの項目があり、エクセル操作でグラフ/プロパティー数字が動く事から「エクセルの処理負荷が表示」までは理解できますが、まだまだ勉強不足で理解しきれません。
本件連続モニターでもあり、モニタLogに『エクセルの処理負荷を取込』Logに追加記録したいとの考えです、もう少し頑張ってみます。
ありがとうございます、45項目貼り付けましたが文字数オーバーで断念しました。
Msdn/VBAフォーラムはちょっと敷居が高いかな、docs.microsoft.com を当たります。
ご指摘のとおり全てのメモリスタック対策を進めます。
Nothing化済/現在暗黙参照の修正中これでだめなら手詰まりに・・敷居を跨ぐか?
’-------------------------------
●VBAオンラインMoniterやはり無理があるのかな・・・メモリ不足が最大/越せない壁になるか。
●予算が有れば外部ソフト屋さんノウハウを買う事も出来るのでしょうが・・・。
●今から高次(汎用)言語のPrgを勉強しVBAとの合せ技で行くのも大変そうだし。
インスタンス1⇒Vbs⇒インスタンス2 みたいにVBSで細切れにできそうかな?
・・・・思わず愚痴が出てしまいました。
もう少し頑張ります。