Excelメモリ不足で完全に表示できない問題の解決方法

このQ&Aのポイント
  • OS: Vista Excel2007でVBAを使いマクロを作成し、OS: XP Excel2003で操作中に「メモリ不足です完全に表示できません」と表示される問題について質問しています。
  • 質問者は同一ブック内に「見積書」「発注書」「顧客」「業者」などのシートがあり、相互に参照しあう設計になっています。また、数式や条件書式、印面画像の使用があり、マクロではページ追加・削除を行っています。
  • 数回の操作の後に画面をスクロールするとエラーが発生し、ファイルサイズは1メガを超えていません。解決策が見つからず、再度質問することになりました。
回答を見る
  • ベストアンサー

再質問:Excel メモリ不足です 完全に表示できません

http://okwave.jp/qa5374574.html こちらで同様の質問をしており、参考サイトをご紹介いただいていましたが 解決にいたらなかったためカテゴリを変えて再質問いたします。 OS:VISTA Excel2007でVBAを使いマクロをつくり、OS:XP Excel2003での操作中に 「メモリ不足です完全に表示できません」と表示されます。 同一ブック内に「見積書」「発注書」「顧客」「業者」などのシートがあり 「見積書」「発注書」間では相互に参照しあい「顧客名」などはVLOOKUPを使用して参照しています。 「見積書」では「数式」「条件書式」多用だけでなく「印面画像」も使用しています。 マクロでは、ページ追加・削除を行います。 この操作を数回繰り返したのち画面をスクロールするとエラーになります。 ファイルサイズは1メガを超えません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 私は、前の質問を読んで書きかけていたのですが、アップロードをやめてしまいました。もちろん、他の方の回答は読んだ上ですが、物理的な問題ではありません。VBAの上位互換はだいたいは通るのですが、下位互換っていうのは、ないと思ったほうがよいです。 VBAの開発の長いの経験のある人なら知っていることですが、下位バージョンが手元にない場合は、下位バージョンのソフトウェアを、高いお金を出しても購入しなくてはならないことがあります。 そのようなお話の場合は、原因は、メモリリークに他ならないと思いますが、オブジェクトの部分を点検したほうがよいですね。同じ名前の、新しいオブジェクトと従来のオブジェクトのマッチングが、うまくいっていないのだろうと思います。 そこで、私が、まずお勧めすることは、Excel 2003 用には、ブックを新規から作ってみることです。上位に上げる場合はあまり必要ないのですが、シートは、上位バージョンからセルを全部コピーして、下位バージョンにセルに貼り付け。コードは、VBE側のプロジェクト・エクスプローラから、エクスポートとインポートをしてみることです。

Excel-VBA
質問者

補足

もう誰からも回答をいただけないものとあきらめていました。 ご回答いただいただけで、感謝の気持ちでいっぱいです。 お礼を言いながらあつかましいのですが、 「同じ名前の、新しいオブジェクトと従来のオブジェクトのマッチングが、うまくいっていないのだろう。」 VBAの経験が浅く、この部分がまず理解できませんでした。どのような状態を想像すればよろしいでしょうか。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 そのままになっているというのは、うまく行かなかったか、とてもじゃないけれども、下位バージョンで、CSVインポートなど出来ないということかもしれません。もし、そうでしたら、Excel 2007 側のデータで、バイナリやバイナリエラーデータになる不要成分(見えない文字か?記号、外字、オブジェクトなど)を探すしかないと思います。しかし、あまり良い案だとはいえませんが。

Excel-VBA
質問者

お礼

ご親切なアドバイスに深く感謝しております。 質問させていただいたマクロの解決以上の成果があったと感じています。 ありがとうございました。

Excel-VBA
質問者

補足

For Each myShape In ActiveSheet.Shapes myShape.Delete Next 実際の対象範囲は限定していますが、メモリ不足の初期段階で上記のようなコードで画像を削除していました。 また、ほとんどが「列項目固定」の表形式のシートではなく「見積書」のような単票物であったため、アドバイスいただきながらCSVは試していませんでした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 >(3) (1)の左上隅をクリックしコピー、(2)の左上隅をクリックし貼り付け。 >(3)を全シート分実行しましたが、大きな勘違いでしたでしょうか。 後で考えたけれども、普通、それしかないですよね。他にも、オートメーション・オブジェクト--CreateObject で単独に開いて、二つのExcelをあける方法もあります。いすれにしても、場合によっては不要成分までコピーする可能性が高いです。むろん、これは私の想像ですが。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 なかなか、核心には到達しないのですが、私も手探り状態です。一応、最後の切り札です。(また、他のアイデアが出るかもしれませんが) >(2)2007の全てのシートの全てのセルをコピーし新規ブックへ貼り付け。 これをどうやってするのか良く分かりません。Excel 2007 と Excel 2003 は、同時に開けられないとは思います。一旦、Excel 2007 を閉じて、Excel 2003 を開けるのでしょうか。もし、そうだとすると、その時、不要な成分をコピーしているという可能性もあります。 その現象自体は、「メモリーリーク」というものですが、昔々、同じ現象があったときに、バイナリファイルの中に、特殊文字(昔は、IBM特殊コードや一太郎の外字)が入ったりすると、起こるといわれました。本来、Excel 2007には入りようがないはずですが、バイナリにしたら、なんともいえません。そこで、昔のサポートでは、Sylkファイルや、CSVにしてデータを出力して、それを新規のファイルにすると、直ると言われました。もちろん、CSVにしてしまったら、書式も数式もなくなってしまいますから、大手術になってしまいます。それでも、データは残るから仕方がないかというところです。 実際に、問題が発生したブックをバイナリエディタで中身を見ると、まったく関係のないデータが入っていることを見たことがあります。一体、どうして入り込むのか分かりません。Excelファイルの脆弱性ということで、サポートにも出ていたように思います。 それと、そういう中で生まれた関数が、Clean関数というものだそうです。これも、古い話で、バイナリデータ(本当は、エスケープシーケンス)を取り去る関数です。昔は、エスケープシーケンスで、印刷の命令を書いていたからですが、それを不要なバイナリデータを削除するにも使用していたようです。ですが、必ずしもワークシートの表面に不要成分が存在しているわけではないので、それで確実に取れるとは思えません。

Excel-VBA
質問者

補足

(1) 問題のブックを2003で開く。 (2) ファイル>新規作成で新規bookを作る。 (3) (1)の左上隅をクリックしコピー、(2)の左上隅をクリックし貼り付け。 (3)を全シート分実行しましたが、大きな勘違いでしたでしょうか。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 マクロがない状態で、メモリ不足が出てくる、ということですが、片方のXP側のプログラムファイルや設定ファイルが壊れている可能性をまず疑いますね。特に、 C:\Documents and Settings\<ユーザー名>\Application Data\Microsoft\Excel\*.xlb や C:\Documents and Settings\<ユーザ名>\Application Data\Microsoft\Excel\StartUp\PERSONAL.XLS などに問題が発生していることが多いです。一度、これらを探して、一度、名前を換えて、移動してみたらどうでしょうか。また、\StartUp\フォルダの中は、空にしてみたらどうでしょうか。このフォルダは、異物があると誤動作します。 その後に、念のために、ヘルプからアプリケーションの修復をしてみるとかどうでしょうか。

Excel-VBA
質問者

お礼

毎回ご丁寧な回答に感謝しています。 遅くなりましたが、試してみました。 (1)Excel\*.xlb:移動して\Excel内を空にして実行  メモリー不足:発生しました。  *.xlb:自動生成されていた。 (2)\Excel\StartUp\PERSONAL.XLS :もともとありませんでした。 (3)アプリケーションの修復:インストールが始まりそうなので中止ししました。 (1)(2)とも複数PCで確認しましたが、同じ結果でした。  

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 返事をつけるのが遅くなりました。 >>「同じ名前の、新しいオブジェクトと従来のオブジェクトのマッチングが、うまくいって>>いないのだろう。」 >VBAの経験が浅く、この部分がまず理解できませんでした。どのような状態を想像すればよ>ろしいでしょうか。 この意味なのですが、私自身は、詳しい資料を覚えたわけでもないし、Office 2007 の開発では、別な事情が絡んで、投げ出したくなったことぐらいの経験しかありません。 ブック自体をいくらOffice 2003形式で保存しても、下位バージョンに設定させると、上位で使われていたオブジェクトやそれを動かす、VBAのコンポーネントに結びついたVBAのモジュール(バイナリ)が違うので、トラブルを起こすことがあります。特に、プロパティに多いようです。プロパティを省略すればよいと思うかもしれませんが、そうではないようです。 Office 2007 は、互換性の資料(マイグレーションと言います)はざっとしか読んだ覚えがないのですが、同じ名前の、おそらくは違う種類のオブジェクトがあるようです。たとえば、"Table"というオブジェクト(概念)が上位バージョンでは、もっと頻繁に現れています。 下位から上位に対しては、それがなくても、使わないというだけで済むのですが、上位から下位は、そういうわけにはいかないようです。たとえ話で恐縮ですが、同じ入り口から入っても、誘導してくれれば、違う出口には出られるように作られているのですが、逆からは、元の入り口には誘導してくれないので出られないということです。 実は、ここの掲示板で書いていて、私個人は、あまり、この点で追いかけていないのです。 理由は、甘さの残るコードは、下位ではトラブルが起こらないけれども、上位では、トラブルを起こすという原則的なものがあるので、きちんとして書いたものには、コード(テキストベース)では、問題は少ないという考えからです。 そこで、今回、私が、お勧めしたのは、ブックという元になるオブジェクトは新規で、データやVBAのコードだけを移植したらどうか、ということです。 資料: Review migration issues for the 2007 Office system (機械翻訳がついています) http://www.microsoft.com/japan/technet/prodtechnol/office/ork/library/377a9113-b8bb-498c-a846-26759c5dac15.mspx?mfr=true ただ、今回、大幅な改編のために、Microsoft 側は、"Microsoft Office Migration Planning Manager(OMPM)というツールを作ったので、詳しい資料が今回ないような気がします。 Office 2007 Migration and Application Compatibility(フォーラム) http://social.technet.microsoft.com/Forums/ja-JP/office2007deploymentcompatibility/threads (英語)

Excel-VBA
質問者

お礼

ご丁寧なご回答に感謝しております。 下のような対応をしましたが「メモリ不足」が出てしまいました。 一旦今回の方法を破棄し別の方法を模索してみます。 (というか知識・経験が乏しいため諦めています) ありがとうございました。 (1)Excel2003でBOOKを新規作成。 (2)2007の全てのシートの全てのセルをコピーし新規ブックへ貼り付け。 マクロは2007からエクスポートしていましたがインポート前のマクロがない(2)状態で新規ブックをスクロールしてみたことろ「メモリ不足」が出てしまいました。

関連するQ&A

  • Excel メモリ不足です 完全に表示できません

    OS:VISTA Excel2007でVBAを使いマクロをつくり、OS:XP Excel2003での操作中に 「メモリ不足です完全に表示できません」と表示されます。 同一ブック内に「見積書」「発注書」「顧客」「業者」などのシートがあり 「見積書」「発注書」間では相互に参照しあい「顧客名」などはVLOOKUPを使用して参照しています。 「見積書」では「数式」「条件書式」多用だけでなく「印面画像」も使用しています。 マクロでは、ページ追加・削除を行います。 この操作を数回繰り返したのち画面をスクロールするとエラーになります 2007での操作ではエラーは出ませんでしたが「条件書式」が一部反映されませんでした。 倍率100%にしたり、条件書式を少なくすることは試行済みです。

  • 【Excel】メモリ不足でマクロが消える?

    他の環境で作成したマクロ付きのExcelファイルを、別のパソコンに送付し、そこで開こうとすると次の現象が発生してしまいます。 ・上書き保存しようとすると「この操作を完了するにはメモリが不足しています。扱うデータ量を減らすか、他のアプリケーションを終了してください。使用できるメモリを増やすには、以下を検討してください。 -64ビット版の Microsoft Excel を使う。」と表示され、保存ができない。 ・マクロを使用しようとすると「マクロ '(ファイル名).xlsm!(マクロ名)' を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」と表示され、マクロを実行できない。 ・マクロを確認しようとエディターを開くと、モジュールのみが存在し、その中身のマクロの記述は白紙になって存在しない。 ・全く同じようにマクロ付きのExcelファイルを作成し送付しても、ファイルによって正常に動作するものもある。(Excel自体がマクロ無効の設定になっている訳ではなく、全てのExcelファイルに対してメモリ不足を通知される訳ではない。) この際、必ずしもファイルサイズのより大きいファイルが正常に動かないとは限らず、1,453KBでも正常に動くファイルもあれば、537KBでも正常に動かないファイルもある(ただし、マクロの記述量自体は上記の1,453KBのファイルよりも、537KBのファイルの方が多い)。 これを踏まえた上で質問なのですが、 Q1. この症状の原因は実行環境とファイルサイズ(マクロの記述量?)によるものなのでしょうか? Q2. この症状の回避方法は、あまり大きなマクロファイルは作成しないことしかないのでしょうか? 尚、Excelファイルの作成元の環境はMacOSX 10.9.5,Excel for Mac 2011、 送付先の正常に動作しない環境はWindows8.1,Excel2016です。

  • Excel2000 → Excel2002でエラー

    Excel2000で作成したファイルがあります。それを、Excel2002で使用したいのですが、 ユーザーフォームにカレンダーコントロールを 設定している分が、エラーとなって表示されません。 その他のマクロ等に関してもエラーが出たので、 VBEの「ツール」-「参照設定」にて参照付加になっているもののチェックははずしました。 どのようにしたらよいでしょうか? よろしくお願いします。

  • Excel2003でリソース不足と表示されてしまいます・・・容量を減らす方法を教えてください。

    Excel2003で顧客台帳と1日~31日までの1ヶ月分の受注台帳をひとつのブックで利用しています。顧客数がふえ、顧客台帳の1シートが全列ではありませんがA~V列×約15,000行まで情報が入力されていて、1日ごとの受注シートにはマクロ・数式が入っています。ブック全体の容量は25MBあり、最近「リソース不足・・・」の表示がでてしまいます。 ためしに顧客台帳だけ、別シートに値で貼付し直したらそのブックは6KBでした。 1枚のシートでマクロ・数式がなく値の入力だけでもA~V列×15,000行あると容量は大きくなってしまうのでしょうか? ちなみに1つの顧客台帳をリンクさせて3つのPCで1ヶ月分の受注台帳を動かそうと考えています。その場合は3台同時に顧客台帳を見に行く場合は台帳を共有させなければいけないと思うのですが、試しでやってみましたがそれもリソース不足になってしまいます。 乱文になってしまいましたが、どなたかいいアドバイスを頂けますでしょうか?よろしくお願いします。

  • EXCEL2007でリソース不足が発生します。

    OSはWinXPです。EXCEL2007のマクロでデータを取込み、データをシートのセルに順次記入しています。当初は問題無く動作していますが、十数時間経過すると画面が異常になります。EXCELのシートが別の位置に2重に表示されたり、一部の表示が黒くなったり、そのまま操作していると「リソース不足」とか「メモリー不足」のメッセージが表示されたりします。 EXCELを一旦終了して再起動すると、また問題なく動作します。 過去、EXCEL97、2000等2003まででは全く問題無く動作した実績があります。 デスクトップヒープを6MB増やすとか、仮想メモリーを増やすとかもしましたが問題解決には至っていません。 どうかよろしくお願いします。

  • 【Excel】マクロ未使用なのに、使用されている警告メッセージが表示さ

    【Excel】マクロ未使用なのに、使用されている警告メッセージが表示される。 Excel2002使用。 今まで使用しているExcelで作成した見積書(マクロ未使用)があります。 この度、取引先から「既存の見積書に新しい書類を追加してほしい」との事で、取引先が使用しているテンプレートをいただきました(Excelデータ)。 見たところ、セル中によくわからない関数が入っていたのですが、無視してとりあえず書式(形式)だけもらおうと、  ----------------------------------------  シートのタブ右クリックで「移動またはコピー」  ---------------------------------------- で、既存の見積書ファイルにコピーし、保存、終了。したところ、次回既存見積書を開くと、下記のようなメッセージが表示されるようになりました。  ///メッセージ///   このブックにあるマクロは、セキュリティ レベルが高に設定されており、デジタル署名されていないかまたは安全なものとして確認されていないため利用できません。マクロを実行するには、署名するか、またはセキュリティレベルを変更する必要があります。詳細についてはヘルプを参照してください。  ///以上///  表示中の「OK」をクリックするとデザインモードで開かれます。 マクロの事は全く無知ですが、  ----------------------------------------  ツール>マクロ>Visual Basic Editor  ---------------------------------------- を開いて、マクロが使われているか確認してみました。  ・既存ファイル:マクロ未使用(「標準モジュール」がなく、作業エリアにもウインドウが表示されていない事で判断。)  ・取引先のファイル:マクロ使用(「標準モジュール」があり、Visual Basic Editorを開いた時点で、マクロが記入された(?)ウインドウが複数表示されている。) という結果でした。 上記のとおりの判断ですが、既存ファイルでマクロを使っていないにも関わらず、警告のメッセージが表示されるのは何故でしょうか。 セキュリティレベルは今「高」になっており、レベルを下げれば通常通りに使用できるようですが、変にマクロが実行したりすると不安です。 解決・改善法がおわかりになる方、どうぞ宜しくお願い致します。  必要な補足かわかりませんが・・・、   ・警告メッセージ>OK 後も、従来どおり見積の入力、保存はできます。   ・既存にシートコピー後、取引先で使われていた関数は削除し、自分で関数を上書きした。   ・既存にシートコピー後、既存ファイルにはシートの保護をかけています。

  • EXCEL2007でワードアートが表示されない・・・

    EXCEL2007でマクロを使用して新しいブックを作成したところ、その新しいブックではワードアートやテキストなどが表示されません。印刷プレビューでは表示されます。ワードアートなどをシートに挿入した状態で図の挿入など別のウィンドウを開くとそのワードアートはチカチカ点滅表示します。 2007以前のEXCELの操作方法は検索できたのですが、2007での操作方法がわかりません。 どなたか教えてください。 よろしくお願いします。

  • EXCELでリソース不足発生

    みなさんこんにちは。 困っていることがありまして助けていただきたいのです。 EXCELで売上管理をしていまして、顧客台帳と売上帳の二つのブックを 使っています。 売上帳からVLOOKUPを使って顧客台帳から必要なデータを参照しています。 顧客台帳は1200行135列からなるテーブルで計算式などは一切使って いません。またこのブックはサーバ上にあって開かずに使っています。 この状態で売上帳を開くと「リソース不足のため、このタスクを完了することができません。~」と表示されてしまいます。 また、VLOOKUPを使っているところには#REF!と表示されているところもあります。正常に表示されているところもあります。 試しに顧客台帳を開いた状態で、売上帳を開くとエラーは一切出ません。 何がいけないのか全くわかりません。 どうかご教授よろしくお願いします。

  • Excel20003の集計が遅い

    現在、Excel2003を使用しておりますが、データ==>集計(B)がExcel2000に比べて、かなり遅くなって困っています。遅くなっている原因として、対象のシートはVlookup関数で他のシートを参照しており、その関数再計算のためのようですが、Excel2000で同じシートを集計していた時はすぐに処理が完了していました。 なんとなく、Excel2003の何かの設定を変更すれば改善されるように思うのですが…。 ご存知の方、教えてください。よろしくお願いいたします。

  • Excel関数で自動でファイルを作成する方法

    皆さん宜しくお願い致します。 現在Office2013のExcelを使っています。 どんな事がしたいのかをご説明致します。 ■手元にあるExcelファイル ・データ入力用Excel ・見積書Excel ・請求書Excel データ入力用Excelの一番下の最後の行に顧客名を入力すると 見積書Excelと請求書Excelのファイルの宛名の部分に入力したデータが反映され、 更に、開かれた見積書Excelと請求書Excelに顧客名+日付の名前がついたファイルが作成される、 といった事は関数で実現可能でしょうか? 当方VBA、マクロはよくわかりません・・・。 どうか宜しくお願い致します。

専門家に質問してみよう