【先着1,000名様!】1,000円分をプレゼント!

Excelで、ごく小さな範囲での作表しかしていないのに、
ファイルサイズが巨大になってしまいました。
(どう見ても数十KB程度くらいにしか見えないのですが、
 実際には6MB程度になってしまいます。)
これはなぜなのでしょうか。

大部分を占める空白セルを選択して削除をしてみたのですが、
ファイルサイズは変わりませんでした。

Accessファイルであれば「最適化」とかいうコマンドがあって
無駄なサイズの縮小ができるのは知っているのですが、
Excelファイルで同じようなことはできないものでしょうか。。。


ご回答のほど、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

図形(特に未記入のテキストボックス)とか使ってませんか?


セルのコピー時に図形も一緒にコピーされるとそのようになります。
オブジェクトの選択(図形描画ツールバーの白い矢印のボタン)で
範囲を矩形領域で囲んでご確認ください。
不要な図形が一杯貼りついてると思います。
    • good
    • 3

[ツール]-[変更履歴の記録]-[変更箇所の表示]の[編集中に変更箇所を記録する] にチェックが入っていませんか? ここにチェックが入っていて、何度も上書きしているとファイルサイズが肥大するようです。

新しいシートにコピー&貼り付けするのが手っ取り早い方法でしょう。
    • good
    • 10

可能性として、


1.非表示のシートがあり、大量のデータが入力されている。
  →書式-シートの再表示で確認
2.VBAのでかいソースコードが存在する。
  →ALT+F11でVBEのウインドウを開いて確認する。
3.大きな画像データもしくは、大量のオートシェイプがシートのどこかに隠れている。
 →図形描画のメニューバーにある、範囲選択(マウスポインタの形のボタン)で、シートのなるべく広い範囲を選択してDelキー
  もしくは、必要なセル部分のみ別ブックにコピーして、そっちを原本扱いとする。
    • good
    • 4

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルファイルの容量が大きくなる要因

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時にはエラーが出て作業が出来なくなりました。

別のエクセルファイルに作り直すことにして今のところ2シートほどのもので作業する分には特にファイルを開くのが遅いということもなくなりました。

ファイルサイズをみると、
 7シートのもの・・・18,903kb
 2シートのもの・・・88kb
と多少シートごとのデータが異なるにしても、重たいほうのファイル(7シートの方)シート枚数の比率をはるかに超えた容量となっていました。
何か要因があるかと思い、2シートの方のファイルでは、文字列と数値を改めて入力しなおし、新たに計算式などは入力しなおして、極力シンプル(強調や網掛けなどを省いた)に作るようにはしています。


今後の作業では無用にファイルサイズが大きくならないように気をつけたいのですが、ここまでの差が出るのは何が原因なのかよくわからず困っています。

単純に入力データ=ファイルサイズではないとは思うのですが、入力したデータ以外でファイルサイズが重くなる要因というのは何が考えられるでしょうか?
以下のもの、またはそれ以外に影響が大きいと思われるものがあればアドバイスいただけたらと思います。

数式(”sum”、”+”、など)
装飾(フォント、網掛け、太字、罫線、など)
ヘッダー、フッター(シート名、ページ数、日付、など)

よろしくお願いします。

バザーの品物を確認するために、エクセルシートで集計作業をしています。


「品目・個数・単価・小計」の行が100行ほど、
さらにそれを合計するという比較的簡単なものですが、日々追加されていくのである程度の区切りごとにシートをコピーして日付ごとに新しく作っていました。

例えば、10月1日のシートをコピーして新たに10月8日分のシートとしてそちらを更新していくという感じです。

1つのエクセルファイルにそのような手順で7シートほど作っていたら、ファイルを開くのが急に重くなってきてしまい、時に...続きを読む

Aベストアンサー

みえないオブジェクトが大量にあるかもしれません。
各シートごとに下記を試してみてください。

ただし、一括削除すると必要なオブジェクトも消えますので、図や電子印など
使用しているものをあらかじめ把握しておいて下さい。

 1.「編集 → ジャンプ」から「セル選択」ボタン
 2.「オブジェクト」にチェックを入れて「OK」ボタン
 3.シート内の全てのオブジェクトが選択されるので「Delete」キーで削除

参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1110457961

QExcelのFileサイズの急な肥大化

Excelにデータを1000行位入力し、中にIF関数とかを入れまくって、それでも、Fileサイズが2500Kb程度だったのですが、ある日、改訂版のFileを作ろうと、自分なりに技巧を凝らして、関数計算を増やしたり(場所により関数に関数を入れたり)、カラフルにしたり、シートの保護をしたり、離れたところに集計欄を付けたりしたとたん、急にFileサイズが10000Kbを越えて、職場のパソコンでは、単独で使うときは問題ないのですが、別のExcelと同時にFileが開かないくらいに、開く時とか、保存する時とかに時間がかかるようになり、使い物にならなくなりました。

私自信、Excelには随分と経験があり、(自称)職場の中のExcel先生なのに理由が分かりません。
いくら関数の量を増やしたといっても、最初の関数の量から考えて4倍にもなるほどには増やしていません。まさか、空白のセルまで全セルを保存するようになってしまった?関数の入れ子はデータを費やす?シートの保護をしない方がいい(シートの保護をしないと他の人に使わせる訳にはいかないのです)?

ご存知の方がいらっしゃったら教えて下さい。

Excelにデータを1000行位入力し、中にIF関数とかを入れまくって、それでも、Fileサイズが2500Kb程度だったのですが、ある日、改訂版のFileを作ろうと、自分なりに技巧を凝らして、関数計算を増やしたり(場所により関数に関数を入れたり)、カラフルにしたり、シートの保護をしたり、離れたところに集計欄を付けたりしたとたん、急にFileサイズが10000Kbを越えて、職場のパソコンでは、単独で使うときは問題ないのですが、別のExcelと同時にFileが開かないくらいに、開く時とか、保存する...続きを読む

Aベストアンサー

Word や Excel は編集で元へ戻すための情報を保存しています。
そのため編集を繰り返すと結果の情報はさして増えてないのに
ファイルサイズがバカでかくなることがあります。

対症療法として、新しいブックを作り各シートをそちらにコピーして
保存します。その新しいブックのファイルサイズが大きくなければ
以後、新しい方を使います。

QExcel)軽いデーターのはずなのに、メチャメチャ重い!

こんにちは。
会社の共有フォルダーに「見積り書」というエクセルファイルがあります。
従業員はそれを各PCにダウンロードして、それぞれが見積りを作ります。
ある日をきっかけにめちゃめちゃこの見積りが重くなりました。
このたった1枚の見積りなのにサイズは4MB。写真、画像、マクロ、一切ありません。
それならまだ許せるのですが、、開くのにかーーーーなり時間かかります。5分以上はかかります。

「誰が触った!」「どう触った!」など調べるより新しく作り直そうと試みました。

なんとか10分ほど待って開きました。
そして7列x20行ほどのセルを囲んで「Ctrl」+「C」を押してコピーして、その新しいエクセルに貼付けようと試みました。
ところがコピーした段階でまた「応答無し」なります。
この症状は1人を除く従業員全員、しかもこの見積りだけです。あとはスイスイ開きます。
どれかのセルにゴミのようなデーターが入ってしまってるのでしょうか。
何が原因でしょうか?考えられるものを挙げていただけましたら幸甚です。

Aベストアンサー

コメントでも大量に入力されたのでしょうか。コメントの付いたセルはセルの右上に赤い三角マークが付くので見た目で分かります。コメントってテキストだから容量は大きくならないと思っていたんですけど、入れると凄く大きくなるんです。びっくりしました。

入力されている数式や書式を諦められるなら、他のbookからその問題のbookを参照してはいかがでしょう。値だけを参照するだけですので不要なものは一切付いてきません。
問題のファイル(Book)をBook1とした場合、Book2のA1セルに
=[Book1]Seet1!A1
と入力して必要な範囲までコピーします。
そののちに、Book2のseet全体をコピーして、「形式を選択して貼り付け」から「値」を選んで同じ範囲に上書き貼り付けすると良いです。
あとは正常に開ける人のパソコンの画面を見ながら数式や書式を設定してみてください。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcelのサイズが小さくなりません

ExcelのBookのサイズが大きくて困っているので教えてください。
Excelで作ったリストなのですが、罫線、数字等なにも入力していない
(なにもない白紙の部分)が大いためかBookのサイズが3MBにもなり、
メールにいくつか添付すると容量オーバーで送れません。

リスト自体は300行5列程度の大きさで、普通に作ると60KB程度なのですが、
今回取引先から送られてきたリストがなぜかどれも3MBぐらいあるのです。
基本的に白紙の部分というのは限りはないとは思うのですが、
スクロールバーなどは入力されている部分のサイズに合わせて変化していると思います。
しかし、そのサイズの大きいBookはスクロールバーも
下まで下げると60000行まで移動します。

Ctrl+Endで文末にカーソルを移動させると、普通そのリストの最後にカーソルがいくのですが、
その3MBのリストは何も入力のない60923Nまでカーソルが移動します。
印刷すると普通にリストの部分だけが印刷されます。
行の削除などをしてみても変化はありませんでした。

分けて添付したり圧縮して送ればいいのでしょうが、
あまり何回も送りたくないのと、必要のない部分でサイズが大きくなっているので
そのBook自体のサイズを小さくできるものならしたいです。

ないか良い方法をご存知の方がいらっしゃいましたら教えてください。
よろしくお願いいたします。

ExcelのBookのサイズが大きくて困っているので教えてください。
Excelで作ったリストなのですが、罫線、数字等なにも入力していない
(なにもない白紙の部分)が大いためかBookのサイズが3MBにもなり、
メールにいくつか添付すると容量オーバーで送れません。

リスト自体は300行5列程度の大きさで、普通に作ると60KB程度なのですが、
今回取引先から送られてきたリストがなぜかどれも3MBぐらいあるのです。
基本的に白紙の部分というのは限りはないとは思うのですが、
スクロールバーなどは入力されてい...続きを読む

Aベストアンサー

こんにちは。

恐らく原因は、ワークシート上の最終データセルの位置をEXCELが誤認識しているためです。

>その3MBのリストは何も入力のない60923Nまでカーソルが移動します。

N60923セルが最終データセルとして認識されていれば、数万行の空セルをEXCELが保持していることになります。
最終行より前の、つまりデータとデータの間に空行があると、空であってもその分を空として保持するために、メモリを消費しますし、当然ファイルサイズにも影響がでます。
今回は60923行と膨大なスケールでしたので、ファイルサイズが3Mまでに至ったのでしょう。
解決策は参考URLをご覧下さい。

参考URL:http://support.microsoft.com/default.aspx?scid=kb%3bja%3b405492

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング