質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

10520閲覧

Excel vba でメモリが不足しています。っと表示されて処理が完了できない。

kamikazelight

総合スコア305

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1グッド

5クリップ

投稿2018/11/14 05:01

編集2018/11/16 04:34

###最終 --2018.11.16 13:40 追記 --
回避策...
手動、マクロ 問わずに 大量のセルに対し操作の必要があるときは
「カメラ」機能や リンクされた図は使用しない
又は、
一度閉じると使用メモリが元に戻るので
目視、又はpowershell 等を用いて使用メモリが一定量を超えたら
Excelプロセスを再起動してから作業を続行する...

「カメラ」機能や リンクされた図は使用しない のが王道でしょうか
他にも不具合がいっぱいあるようですし
便利な機能なのでとても残念です.....

###現在の状況 --2018.11.16 11:35 追記 --
sazi 様 からのコメントで分かったのですが
カメラ機能でなくても
貼り付けオプションの「リンクされた図」でも
同様の症状が出ることが分かりました。

###現在の状況 --2018.11.16 11:20 追記 --
検証を重ねた結果
メモリの上昇量には一応上限があることが分かりました。
カメラの範囲の他
入力されている数式の数 計算量?
等に影響されることが分かりました。
Win10 Excel 2013 32bit でも確認しました。

###現在の状況 --2018.11.16 10:40 追記 --
原因の特定が出来ました。
Excelの 「カメラ」機能を使用して作成したオブジェクトが存在すると
本文記載の問題が発生するようです。

Win10 Excel 2016 64bit で
新規ブックのみを立ち上げ確認致しました。

そのオブジェクトは
0. 適当なセル10個ほど選択
0. 「カメラ」をクリック
0. 適当なセルクリック
で配置しました。

出来れば引き続き「カメラ」機能は使いたいのですが
回避方法はないのでしょうか?
また、症状の再現が出来た方、出来なかった方
環境を教えて頂きたいです。
お願い致します。

「カメラ」機能はクイックアクセスツールバーに追加して利用しました。

イメージ説明
イメージ説明

###現在の状況 --2018.11.16 09:47 追記 --
いろいろ検証をした結果
コードだけに問題があるわけではなく
Excelファイルが異常をきたしている のか
特定条件下のでの Excelの挙動が問題になっている可能性が高いことが分かりました。

発生している 症状は

特定のブックを開いている状態で同じプロセス内の任意のブックの任意の
セルの設定(塗りつぶし、ユーザー定義書式 等)を書き換えるだけで
その都度 使用メモリが増加する。

手動で適当なブックの適当なセルを選択してセルの塗りつぶしボタンを連打するだけでも同様に発生

特定のブックは開かず 新規のブックのみ開いて手動でセルの塗りつぶしボタンを連打しても
使用メモリは 増加しますが
おそらく 戻るボタンの 履歴の関係だと思うのですが そちらは一定以上は上がりません。

特定のブックを開いていると下記のコードを実行しただけでメモリ不足のエラーが表示されます。

vba

1Sub test() 2 3 Dim i As Integer 4 For i = 1 To 10000 5 Selection.NumberFormat = Selection.NumberFormat 6 Next i 7End Sub

他気になる点は
上記コード実行時はExcelのCPU 使用率が10%強 くらいまでしか上がらず
(未保存新規ブックのみ起動の場合は30%くらいまで使用率が上がり、すぐ終わる)
実行速度が極端に低下することです。

現在 状況を再現できないか確認しています。

前提・実現したいこと

発端は
Excel ブック(ファイル)に問題があるのか頻繁にデータが壊れて
修復しますか?と表示される。
修復を選択すると開けるが セル幅 が全て同じ幅になってしまったりして まともに修復できていない。
そんな状態を何とかしたい...
過去に同様の現象が起きたときはブックを新規作成(シートをコピーしたらだめだった)して作り直したら再発しなくなったので、
そうしようと思ったのですが量が多い...

そのためマクロで書式設定等を移してしまおうと思ったのですが
メモリが不足していますと表示されて途中までしか実行できません。

メモリが不足と表示されてしまう原因が全く分からず
今回はいつこの問題が解決できるかもわからないので諦めて手動で作り直そうかと思うのですが、
今後の対策のためにも原因が知りたいです。

極力コードを削って確認してみたのですが
Get_Set_CellInfo 内の 塗りつぶし や 削ったため下記のコードにはないですが
罫線の設定、ユーザー定義書式の設定などでも同様にメモリ不足と表示されます。

タスクマネージャで見てみたのですが パソコン全体のメモリは余裕があるようでした...

発生している問題・エラーメッセージ

![イメージ説明

該当のソースコード

Book1の全ての使用済みセルに対しての処理
処理は結合範囲ごと(セルをひとつずつ確認して結合セル範囲の左上だった時のみ)

vba

1 2Sub SHC() 3 4 Const BaseNm As String = "Book1.xlsx" 5 Const TargetNm As String = "Book2.xlsx" 6 7 Dim Base As Workbook 8 Set Base = Workbooks(BaseNm) 9 10 Dim Target As Workbook 11 Set Target = Workbooks(TargetNm) 12 13 Dim BaseCt As Integer 14 BaseCt = Base.Sheets.Count 15 16 Dim i As Integer 17 18 19 Application.EnableEvents = False 20 Application.Calculation = xlCalculationManual 21 22 Dim Result As Variant 23 24 For i = 1 To BaseCt 25 Debug.Print i 26 Get_Set_CellJoin Base.Sheets(i), Target.Sheets(i) 27 Next i 28 Application.EnableEvents = True 29 Application.Calculation = xlCalculationAutomatic 30 31End Sub 32 33Sub Get_Set_CellInfo(BRng As Range, TRng As Range) 34 35 If BRng.MergeCells Then 36 TRng.Merge 37 End If 38 39' 塗りつぶし 40 TRng.Interior.Pattern = BRng.Interior.Pattern 41 If Not BRng.Interior.Pattern = xlNone Then 42 TRng.Interior.Color = BRng.Interior.Color 43 End If 44 45End Sub 46 47 48Sub Get_Set_CellJoin(BSh As Worksheet, SSh As Worksheet) 49'セルの書式 50 51 Dim Rng As Range 52 Set Rng = BSh.UsedRange 53 54 Dim Row As Long 55 Row = Rng.Rows.Count 56 57 Dim Col As Long 58 Col = Rng.Columns.Count 59 60 Dim R As Long 61 Dim C As Long 62 63 Dim TCell As Variant 64 65 For R = 1 To Row 66 For C = 1 To Col 67 68 If Rng(R, C).Address(False, False) = Rng(R, C).MergeArea(1, 1).Address(False, False) Then 69 Debug.Print Rng(R, C).MergeArea.Address(False, False) 70 Get_Set_CellInfo Rng(R, C).MergeArea, SSh.Range(Rng(R, C).MergeArea.Address(False, False)) 71 End If 72 73 Next C 74 Next R 75 76End Sub

試したこと

For each で回しているのが悪いのかと思いfor に書き直してみた
途中でブックの保存を挟んでみた
Set を使っているものに対しては各プロシージャの最後で set 変数 = nothing をしてみた
パソコンを再起動してみた
ステップインで一つずつステートメントを実行してみた
罫線等の設定でも同様になる

--追記--
mdj 様の「1シート処理するように書き換えてみて、検証するのはどうでしょうか。」の言葉で
目的のブック以外に同様の操作をした場合に同じ現象が起きるかどうかの検証をしていないことに気づいたので、
容量が多い別のファイル(数式は殆ど入っていない)で 検証をした結果
そちらでは同様の問題は発生しませんでした。

--追記--
プログラムエラーとは別に 新規作成から作り直していたExcelブックの件で、
7時間くらいかけてなんとか 元のブックと見分けがつかないくらいまで作ったのですが
2018.11.15 現在 壊れているのを確認しました....

仮定していた「長年(拡張子が .xls だったころから)使ってきたので
ブックのどこかがおかしくなっていて壊れやすくなっている」という可能性が低くなりました。

「代わりに特定条件下で壊れやすくなっている」可能性が 高くなったので
プログラムエラーの件と合わせて再現可能か確認してみます。

他のブックとの違いといえば 他のブックへの参照 と 他のブックからの参照 があり
尚且つ そのデータを使ったグラフがある事くらいだと思うのですが...

--追記--
見かけそっくりに作り直した方のデータ(一度壊れて再び修復中のためグラフがない あと他ブックへのリンクが切れているかも...)に対しては
使用メモリが増え続ける現象は起きませんでした。

--追記--
メモリがパンクする前に中断した場合 そのExcelプロセスを閉じるまで(ブックを閉じても)メモリはそのままでした。
開きなおすと 増加してしまった使用メモリは元に戻っていました。

問題のブックのセル設定の読み込みのみ(variant 変数への代入)のみ行った場合は使用メモリの増加は発生しませんでした。

問題のブックを開いた状態で 同じプロセス上の関係のないブックのセルの設定を書き換えて見たら 使用メモリの増加が発生しました。

どうやら 問題のブックを開いている状態で同じプロセス内のブックのセルの設定を書き換えるだけで
使用メモリが増加してしまうようです。

--追記--
問題のブックを開いている場合
手動で適当なブックの適当なセルを選択してセルの塗りつぶしボタンを連打するだけでも
使用メモリが増加することが 確認できました....

問題のブックは開かず 新規のブックのみ開いて同様の内容を行っても
使用メモリは 増加しますが
一定以上は上がりません。

そちらはおそらく履歴(戻るボタンで戻るための分)で増えただけだと思われます。

補足情報(FW/ツールのバージョンなど)

Win10
Excel 2016 64bit

Book1の情報
拡張子 xlsx
ファイルサイズ 112 KB
各シートのUsedRange
シートインデックス = 1 : 行数 = 57 : 列数 = 54
シートインデックス = 2 : 行数 = 36 : 列数 = 73
シートインデックス = 3 : 行数 = 34 : 列数 = 73
シートインデックス = 4 : 行数 = 34 : 列数 = 73
シートインデックス = 5 : 行数 = 57 : 列数 = 11
シートインデックス = 6 : 行数 = 40 : 列数 = 22
シートインデックス = 7 : 行数 = 31 : 列数 = 15
シートインデックス = 8 : 行数 = 20 : 列数 = 18

グラフ1(折れ線グラフ)
数式多数 使用 (他のブックへの参照と他のブックからの参照多々あり)

tkanda👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

他人の書いたコードは読みにくいので、自分流に直してしまいました^^;
やりたいことはこういうことかな?
動作確認はしてません。意を汲み取っていただけると幸いです。

VBA

1Sub SHC() 2 Dim wbOld As Workbook 3 Dim wbNew As Workbook 4 Dim ws As Worksheet 5 Dim rngTarget As Range 6 7 Set wbOld = Workbooks("Book2") 8 Set wbNew = Workbooks("Book1") 9 10 For Each ws In wbOld.Worksheets 11 Set rngTarget = Get_CellJoin(ws, wbNew.Sheets(ws.Index)) 12 rngTarget.Interior.Color = ws.Range(rngTarget.Areas(1).Address).Interior.Color 13 Next 14End Sub 15 16'結合セルの取得 17Function Get_CellJoin(wsFrom As Worksheet, wsTo As Worksheet) As Range 18 Dim c As Range 19 Dim rng As Range 20 21 For Each c In wsFrom.UsedRange 22 If c.MergeCells Then 23 If c.Address = c(1).Address Then 24 wsTo.Range(c.MergeArea.Address).Merge 25 If rng Is Nothing Then 26 Set rng = c 27 Else 28 Set rng = Union(rng, c) 29 End If 30 End If 31 End If 32 Next 33 Set Get_CellJoin = rng 34End Function

投稿2018/11/15 11:24

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamikazelight

2018/11/16 00:15

回答ありがとうございます。 set rng = c と set rng = union(rng,c) の "c" を "wsTo.Range(c.MergeArea.Address)" に変更して、 結合セル以外も 色を設定するように変更しても 塗りつぶしの色が複数あると 対応出来ないようです。 やろうとしていたのは コピーを利用せずに 見た目を そろえることです。 記載のコードはその一部です。 しかし、現在コードは問題になっていません。 私も最初はコードにだけに致命的な問題があるものだと思っていたのですが 検証を進めていくうちに Excelファイルが異常をきたしている のか 特定条件下のでの Excelの挙動が問題になっている可能性が高いことが分かりました。
kamikazelight

2018/11/16 01:54

原因の特定が出来ました。 質問文に追記しました。 再現されますでしょうか?
guest

0

えっと、最初に、
メモリー不足というのは、パソコンの限界ではなくて、
エクセルが使えるメモリーを使いきったという事だと思います。
エクセル自体が使えるメモリーの量が制限されているようです。

あと、ファイルの拡張子はいま、なにになっているのでしょうか?

長く運用されていると、どんどん余分なものが増えてしまいますが、
新規ブックに値を転記して、セルの書式を設定されているのですよね?

その時に、個々のセルをループしながら、個々のセルを塗潰したりしては、いけません。
1つのセルを塗潰しても、1列全体を選択して塗潰しても、
セルの書式設定の数としては1回で数えるようです。
なので、まとめて出来るセルの書式は一括でセルの書式設定をしましょう。

2010なら100万くらいは大丈夫なはずですが、
10列×10万行以上を個々に設定したら多分制限を越えます。
旧バージョンのファイル形式だと、5000とか10000くらいかと思います。
ご注意を。
詳しくは検索したら見つかると思いますけど???

ホントはどういう風にしたいのかを書いてもらえますか?
なにか代替案を思いつくかも知れません。
コードを動かして見る時間が無いので、
日本語で「こうしたい!」というのも書いていただけるとありがたいかもです。

投稿2018/11/15 06:24

編集2018/11/15 06:55
mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamikazelight

2018/11/15 07:05 編集

回答ありがとうございます。 質問ですが、 同様の内容の処理を実行した際に ファイルによって大きな差(使用メモリが増えていく ものと 全く増えないもの)が出ます。 その原因はどう説明したらいいでしょうか? Excelのバージョンは 補足情報 記載の 2016 64bit です。 --追記-- 拡張子は xlsx ファイルサイズは 112 KB です。 質問文にも追加しました。 --追記-- 一言でいうと 質問文に太字記載してある部分ですが 「メモリが不足と表示されてしまう原因が知りたい」 です。 いろいろ検証したのですが 現在は 全てのブックでその現象が発生するわけではない っというところまでしかわかっていません。
mattuwan

2018/11/15 10:19 編集

>--追記-- >拡張子は xlsx >ファイルサイズは 112 KB です。 普通のエクセルファイルですね。 >「メモリが不足と表示されてしまう原因が知りたい」 ステップ実行をしてみました?(出来るだけゆっくり) ステップ実行してそれがでないなら、1つのセルの書式設定が終らないうちに、矢継ぎ早にセルの書式設定の命令をして処理が追いつかないということがあるかも知れません。手動でやっても体感でわかるくらいセルの書式設定の処理は重いですよね?
mattuwan

2018/11/15 10:24

回避策としては、巡回しながら随時設定するのではなく、セル範囲を変数に記録しておき、後で一括で設定するようにしたらいいと思います。 提示のマクロが何をしたくて書いているのか解りませんが(読んでませんが)、その説明をしていただくと、(シート上のセルの状況も合わせて)なにか実験して回避できる方法を探れるとは思うのですが。
kamikazelight

2018/11/16 01:49

原因の特定が出来ました。 質問文に追記しました。 再現されますでしょうか?
guest

0

ベストアンサー

重くて開けなくなる事象に遭遇したのは、「名前の定義が多すぎる」、「数式が多すぎる」、「オブジェクト(図形など)が多すぎる」というのがありました。
名前の定義はコピーすると増えてしまいがちで、一番多かったですね。
メニュー→数式→名前の管理
で確認できますので、不要なものがあれば削除すると良いかと思います。

その他
Office アプリケーションを修復する
破損したブックを修復する

投稿2018/11/14 06:51

編集2018/11/15 06:29
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamikazelight

2018/11/14 07:08

名前の定義は一切追加していないのでExcel側が勝手に作成するPrintAreaとかそのあたりだけです オブジェクトはグラフ一つと 丸図形が複数でトータルで10前後くらいです 数式は....がっつり入っていますが 重くて開けなくなる...という感じではなくて サクサク開けますが  ダメなときは 保存して閉じた後 開けなくなります。 たまたま確認できた のですが ダメなときは 上書き保存した後にブックを閉じずに そのファイルをコピーしてから開いてみると壊れていました。何度保存を実行しても同じ状態で、新しいブックに全てのシートをコピーして保存することで。とりあえずは保存できました。 たまたま確認出来たのは2回だけなので毎回必ずそういう状態になっているのかは分かりません。
sazi

2018/11/14 07:16

Office アプリケーションの修復は試されましたか?
kamikazelight

2018/11/14 07:56 編集

すみません 別の方の質問を見て 気づいたのですが 目的のブック以外に同様の操作をした場合に同じ現象が起きるかどうかの検証をしていませんでした。 容量が多い別のファイル(数式は殆ど入っていない)で 検証をした結果 同様の問題は発生しませんでした。 sazi 様 すみません。 ちゃんと質問に答えていませんでした。 「Office アプリケーションの修復は試されましたか?」 についてですが、特定のBookでのみの発生します。 そのファイルを別のパソコンに持って行っても 同様に頻繁に壊れることが確認できているので、Officeアプリケーションの問題ではないと思うのですが...
sazi

2018/11/15 06:32

すみません。ブックの修復のつもりが別なリンクでした。 追記しましたので、確認下さい。 確認ですが、対象のブックのファイルサイズって、同程度のボリュームの他のブックに比べて大きくありませんか?
kamikazelight

2018/11/15 06:42 編集

大きくないです。 拡張子は .xlsx で サイズは 112 KBしかありません。 --追記-- ブックの修復は 記載の通り実行できます。 しかし列の幅、結合セル等が 初期状態? に戻ってしまい 表など全てがぐちゃぐちゃになります。
sazi

2018/11/15 06:59

office系がXMLで管理されるようになって、XMLの階層の管理がうまくいかず肥大化していると思われるケースには遭遇したことがあります。 多分管理情報の保存がうまくされていなくて、XMLを展開する際に際限なく展開してメモリ不足が発生していると推測します。 どのように壊れているかは分からないので、やはり修復後の状態若しくは新規で整えていくしか今のところ思い付きませんね。。。
sazi

2018/11/15 07:06

今更ですが、コードを実行したファイルに限りエラーとなっているということですね。 メモリ不足が発生する箇所はコード上のループの部分だと思いますが、想定している件数内で発生しますか? それとも、想定を超えて実行されているでしょうか?
kamikazelight

2018/11/15 07:12 編集

すみません。 質問文が肥大化してきて見難くなってきていますね。 抜粋で 「極力コードを削って確認してみたのですが Get_Set_CellInfo 内の 塗りつぶし や 削ったため下記のコードにはないですが 罫線の設定、ユーザー定義書式の設定などでも同様にメモリ不足と表示されます。」 という感じで一番下位のプロシージャで塗りつぶし や 罫線の設定などをしているのですが それらを行うたびに じわじわ 使用メモリが増えていきます。 問題ないブックは 処理範囲が少なくても、多くても 使用メモリは 全く変わりません。 「想定を超えて」っというのがよくわかりませんが 想定している処理対象は全てのシートの全てのセルです。
sazi

2018/11/15 07:35 編集

ループの回数内で発生しているということですね。 ループの途中で中断して保存し、続きから始めるようなことは可能ですか? 中断して発生しない(メモリーが解放される)なら、別ブックに対して、開いて処理して保存、を繰り返す事で回避はできるのではないでしょうか。
kamikazelight

2018/11/15 07:40

中断はFor でのカウントに書き直したので出来なくはないですが そもそも なぜ塗りつぶしなど実行時に使用メモリが増え続ける現象が 起きるブックと起きないブックがあるのか 原因を特定したいです。
sazi

2018/11/15 07:46

再開した場合に、中断した際のメモリ使用率から始まるかそうでないかで、保存されたデータの問題か、処理の問題かの切り分けにはなるかと思います。 後者である場合は、処理を見直せば改善する可能性があると考ています。
kamikazelight

2018/11/15 08:29

中断した際のメモリ使用率から始まりませんでした。 もう少し詳しく確認したのですが 中断した場合 新しくブックを開き もともと開いていたブック(処理対象のブック)を閉じても使用メモリの使用率は変わりませんでした。 あと 処理を書き換えて書き込みは行わず読み込み(variant 変数への代入)のみ行った場合は使用メモリの増加は発生しませんでした。 まさかと思い 今回問題が発生しているブックを開いた状態で 別のブックのセルの設定を書き換えて見たら 使用メモリの増加が発生しました。 どうやら そのブックを開いている状態で同じプロセス内のブックのセルの書式設定を書き換えるだけで 使用メモリが増加してしまうようです。
sazi

2018/11/15 08:37

事象はブック別に発生するものとしないものがあるという事でしたが、そうでは無いという事ですね。
kamikazelight

2018/11/15 08:49 編集

特定のブックを開いているときのみ どのブックのセル設定を変えても 使用メモリが増加してしまいます。 他にもそういったブックがあるのかは時間がなく見れていません 手動で適当なセルを選択してセルの塗りつぶしボタンを連打するだけでも 使用メモリが増加することが 確認できました.... 問題のブックは開かず 新規のブックのみ開いて同様の内容を行っても 使用メモリは 増加しますが 一定以上は上がりません。 そちらはおそらく履歴(戻るボタンで戻るための分)で増えただけだと思われます。
sazi

2018/11/15 08:58 編集

そういった状態のブックを新たに作り出すことができるなら、ロジックをコメントアウトして、どの書式設定がその事象を引き起こしているかを、確認するかですね。 手間は掛かりそうですが。。 なんとなくですけど、他ブックへの参照が引き起こしているような気がします。
kamikazelight

2018/11/15 09:07

私も そんな気が しています。 書式設定 は罫線とか 塗りつぶしとか ユーザー定義書式とか 位置ぞろえ とか フォント設定とか 殆ど何をやっても 発生します... 例えば Sub te() Dim i As Long For i = 1 To 10000 With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Next i End Sub としてだけでパンクします
sazi

2018/11/15 09:19

Selectionのような使い方をされているのであれば、そこは見直した方が良いですね。 rangeは明確にしないと予期せぬことを引き起こします。 古い記事ですけど、メモリ不足について改善したものです。 Selectionを使用していない事で、改善しています。 http://www.excel.studio-kazu.jp/kw/20061119193546.html
sazi

2018/11/15 09:27

また、無条件に書式設定しているのであれば、必要なところだけに設定するというのもメモリの消費については効果があると思います。
kamikazelight

2018/11/16 01:51

select はどこのセルに対して操作をしても 発生することの確認でしていただけです。 原因の特定が出来ました。 質問文に追記しました。 再現されますでしょうか?
sazi

2018/11/16 02:13 編集

図形は書式設定しているセルの範囲内に配置されているのでしょうか? もしそうなら、書式設定する範囲外に移動させるとどうなるでしょうか。
kamikazelight

2018/11/16 02:26

範囲外でも影響されました。 リンクされた図でも同様に発生することが確認できました。 カメラ機能で生成されるのと同じ種類のオブジェクトでしょうか....
sazi

2018/11/16 02:33

その図形を削除すると発生しないのですよね? サポート行きの案件な気がしますが、マクロ実行時に毎回削除して作成できるような類の図形であれば、影響を回避できるのではないでしょうか。
kamikazelight

2018/11/16 02:36 編集

なるほど.... 配置場所とサイズ リンクされた範囲 あたりが取得できれば 出来そうですね。 ありがとうございます。 サポートに問い合わせてみます。
sazi

2018/11/16 02:44

因みに、その図形にリンクされている箇所の書式設定をしなくても発生するでしょうか? 発生しないのであれば、リンクを外して、書式設定後に再度リンクする方が回避としては楽だと思うので
sazi

2018/11/16 02:58

一応、カメラ機能について、こんなのがありました。 http://www.excel.studio-kazu.jp/kw/20090309222324.html フォーラムでもメモリ不足に関するものは多いですけど、KBが出ている訳ではなく回避策的な対応しかなさそうですね。(カメラ機能そのものについてはなさそうですけど)
kamikazelight

2018/11/16 03:00

ありがとうございます。 見てみます。 サポートの方は 有料サポートの契約がないので という鉄板回答で 全く役に立ちませんでした。
sazi

2018/11/16 03:04

そもそもリンク図は多用すると重くなるようなので、別な方法を考えられた方が良いのではないかと思います。
kamikazelight

2018/11/16 04:08

リンク図はひとつしか使ってないのですが..... 頂いたURL 確認しましたが まさにそうですね アンサーデスクの人が言っていた内容ですが メモリの確保に時間がとられるとCPU使用率が落ちます。 ってことだったんでそういうことだと思います。 Excel 2000の時代からの話ってことは改善はされなさそうですね... 極力リンク図は使わないよう考えていきます。
ExcelVBAer

2018/11/16 04:14

自分はリンク図で、処理速度の大幅ダウンになったことがありますね。 1つでも、です。 リンクを一旦切り(図の数式をクリアだったかな?)、 後で再設定する事で対応しましたが、 メモリ不足等も引き起こすとは。。。
ExcelVBAer

2018/11/16 04:15

数式を手動にしても関係なかったので、 常にバックグラウンドでリンク処理が動いてるのだと思います。
kamikazelight

2018/11/16 05:00 編集

そうですね。 たった一つのオブジェクトが Excelプロセス全体に影響を与える.... なんて 驚きです。 しかも、すぐに症状(エラー)は出ずに潜伏し続け、大量のセル処理が発生したときのみ 発症する.... 怖ぃです。
guest

0

全然関係ないかもしれない、なかったらごめんなさい……

「ファイルが壊れたのか開くのに超時間がかかり、超待ってやっと開いてもなんか表示がおかしくなった」
と相談されてお預かりしたファイルが
コピペを繰り返したのが原因で、条件付き書式が数千個になってしまっていたことがありました。
VBEから条件付き書式を全クリアしたら動くようになりました。
ActiveSheet.Range.FormatConditions.Delete()
だったかしら……。
差し支えなければなんかそんな感じで、書式とか罫線とか、VBEから全部削除してみたら状況が変わるかもしれません。

投稿2018/11/14 05:52

sumire_cl

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamikazelight

2018/11/14 05:55

確認してみましたが、条件付き書式は一つも使っていなかったです....
sumire_cl

2018/11/14 05:57

ActiveSheet.Range.なんとか.Delete() のところを 罫線とか書式とか つまり値以外のものに変えてどんどん削除していって 値だけ残すようにしたら どうでしょうか?
kamikazelight

2018/11/14 08:02 編集

Delete ですか? すみません 削除は行っていません。 Book1のセルの設定をBook2と同じにしたいのです。 該当のソースコードでは 塗りつぶし と セルの結合だけ同じにしようとしています。
ExcelVBAer

2018/11/14 06:35

名前の定義はどうだろう? 非表示になっている定義を、VBAで表示してあげると見れるようになるよ 後はスタイルかな。 条件付き書式と合わせて この3つが、シートのコピーやセルのコピーなんかで、 増殖していくやつかな。。。
mdj

2018/11/14 07:10

1シート処理するように書き換えてみて、検証するのはどうでしょうか。 たとえば -- Sub SHC(sheetNum as integer)  : Get_Set_CellJoin Base.Sheets(sheetNum), Target.Sheets(sheetNum)  : Base.Close Target.Close -- のようにして、Excel自体は閉じないまま存在するシート数分の処理をしてみて問題ないか、などです。
kamikazelight

2018/11/14 07:14 編集

ExcelVBAer 様 名前の定義はVBAを使って確認してみましたが Print Title と Area 以外は _xlfn.IFERROR だけでした。 スタイル....とは何でしょうか 教えてください
sumire_cl

2018/11/14 07:14

重くなっていってダメになるファイルの対策として私がよくやっているのは ファイルを作ったときに、書式とか名前とか結合とかを一気に設定するようなモジュールを書いておきます。 で、重くなってきたら一旦書式とか名前とか全部消してしまって (シートには値と数式だけ残る) それから最初に作っておいたモジュールで書式とかを全部設定し直す、というものです。 いまもうできてるファイルなのでアレですけど 値と数式以外は一旦全部諦めて消しちゃって 改めて設定し直してはいかがですか。 肥っちゃって具合の悪くなったファイルは、何が悪いとか触りまわるより、潔くやり直すほうが手間がかからないように私は思います。
kamikazelight

2018/11/14 07:25

sumire_cl 様 前提・実現したいこと に書いてありますが 作り直しは現在進行中です
kamikazelight

2018/11/14 07:59 編集

mdj 様 1シートではないですが ステップインでの実行は確認しました。 結果はじわじわ 使用メモリが増えていき ある程度のところで エラーでます。 「1シート処理するように書き換えてみて、検証するのはどうでしょうか。」の言葉で  気づいたのですが 目的のブック以外に同様の操作をした場合に同じ現象が起きるかどうかの検証をしていませんでした。 容量が多い別のファイル(数式は殆ど入っていない)で 検証をした結果 同様の問題は発生しませんでした。 そのファイルが特別おかしいのか、なにか条件がそろわないとこの問題は発生しないようです... 再現が可能かどうか検証してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問