
EXCEL 2016 32bitです。
とあるexcel fileで私自身の動作は問題ないのですが
他の利用ユーザーが同じファイルでクラッシュ多発しています。
オートメーションエラーや、何も表示されず突然ファイルが閉じるなど発生するのですが
ステップインで実行したら正常に終了します。
法則性がないと言うか、いろんな場所でクラッシュするので
軽くしたいのですが
メモリの節約方法を教えていただけないでしょうか
私が作ったファイルに関連する情報ではなく幅広くあげてほしいいです。
ちなみにフォームで入力をしています。
現状私がやっている方法
set wb = nothing などでオブジェクトの解放
標準モジュールの独自の関数を出来るだけ作って、codeを長くしないように小分けで関数を実行する
他のファイルを開く前にDoEvents
以下は前回私がした質問です。
”vbModelessをやめれば、解決するのですが”とありますが・・・
最近やめてもクラッシュが連続で起きました。
https://oshiete.goo.ne.jp/qa/13132576.html
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
前回も回答しましたが、メモリの問題じゃないです。
そもそも32ビット版Excelで利用できるメモリは仕様で最大2GBまでですけど、2GBって相当大きいです。
これに引っかかるというのなら設計自体に問題があることになります。
ステップイン実行で完走する、加えてオートメーションエラーが発生する状況から言えば、処理待ちすべきところができていない可能性が高いでしょう。
極端な例だとブックAを開いて、処理が完了してからブックAを閉じないといけないのに、何らかの問題があって意図しないタイミングでブックAが閉じてしまった。この後でブックAを参照するとオートメーションエラーを起こします。ソースの書き方にもよりますが、、
裏でコードが動いてるのにdoeventsで操作ができてしまうので、処理中のウインドウをユーザーが手動で閉じてしまったとか。
だいたいExcel自体がクラッシュして落ちます。
ありがとうございます。
メモリではないですか
確かに2GBではありえないですよね。
フォームにテキスト入力でシート操作とか何もなしでクラッシュとかあって
ご提案いただいた、Me.repaintでクラッシュ率上がったので、メモリかなと思ったのですが
再度確認してみます。
No.2
- 回答日時:
こんにちは
>私が作ったファイルに関連する情報ではなく幅広くあげてほしいいです。
どうしても関係してしまうので、ご容赦を・・
>メモリの節約方法を教えていただけないでしょうか
解放・・そうですが、
メモリー消費をするようなコードを見直すのが1番だと思いますよ
バインディングを見直す
vbModeless、DoEvents、sleep などの事から
loopの処理を見直す必要があるかも知れません
DoEvents、sleep はセットで使用する
オブジェクト(Range,Controlなど)へのアクセスは最小限にする
Add,SetFocus,GoToControl などは極力使わない
オブジェクト解放タイミングやSetを考察する
https://thom.hateblo.jp/entry/2015/12/20/135035
変数のスコープを考察する
状況(対象ブック)により他のExcelBookを開く時は別インスタンスを使う(メモリー消費が増えますが解放できるかな・・)
消費の激しいコードを改善する
数式入力・・範囲.Value = 範囲.Valueなど、みたいな・(範囲によります)
素人の為、個人的思い込みの可能性がありますので参考程度で・・
たくさんあげていただきまして、ありがとうございます。
助かります。
ControlやAddを減らして
他のファイルを開くときは、別のインスタンス名にしました。
今のところ(2日は大丈夫です。)
No.1
- 回答日時:
昔ならともかく今じゃあまり関係なさそうな感じもしますが。
⇒昔(Excel2000辺りで)5回位やると不具合が発生した事ありました。
作業中に何度もユーザーフォームを開いては閉じるって事をするのなら、
ユーザーフォームが閉じる際のイベント
https://daitaideit.com/vba-userform-event/
でメモリから解放してあげる
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
とか?
あとは常駐ソフトでCPUに負荷をかける物があるか、タスクマネージャー等で監視しながらさぎょうをしてみるとか。
他に行くなら2016にPCスペックが追いつかないとか、放熱が悪くてCPU等の温度が高めになってるとか・・・かな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vba フォーム軽量化 1 2022/09/07 18:59
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PC内で速度を遅くした音源をCD...
-
e-taxで送信ファイルの拡張子が...
-
Flashにmp3を読み込み
-
流れる画像をクリックして他ペ...
-
A4の紙に印刷されている文字を...
-
多数の見開き画像を自動で二分割
-
iphoneでネット画像を保存でき...
-
VHDLを書くときのエディタにつ...
-
Visual C++ 2008を使いたいので...
-
LOGファイルのアイコンが変わっ...
-
MP3でFM録音 その後ファイルを...
-
【VC++2005】複数ビットマップ...
-
C++の画像処理について【画像の...
-
defenderが無効になっています。
-
初心者のフラッシュ作成
-
ホームページビルダーでの図作成
-
ExcelからCSVへウムラウトなど...
-
static変数とマルチスレッド
-
2枚、マイクロSDカードを入...
-
ボタンで画像が切り替わるフラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
e-taxで送信ファイルの拡張子が...
-
個別に違う添付ファイルを付け...
-
A4の紙に印刷されている文字を...
-
エクセルで「特定の文字を含む...
-
PC内で速度を遅くした音源をCD...
-
2枚、マイクロSDカードを入...
-
拡張子「.IDJ」を、windo...
-
エアコンの冷媒 R410Aの重...
-
リストビューで選択行の背景を...
-
複数のブックを新しいブックのS...
-
TextBoxにフォーカスを与えると...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ビデオファイルのプロパティの...
-
Fortniteのクラッシュについて
-
GIMP separate+プラグイン クラ...
-
リストビューの選択状態を取得...
-
VBS フォルダ内にあるすべての...
-
スマホでtxtファイルを編集する...
-
ファイル数と合計サイズの取得方法
-
Accessのソースが見れない
おすすめ情報