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

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

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

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

アンサープラス

こちらのサイトに重いExcelファイルを軽くする対処法が書いてあります。

不要なデータの削除、ファイルのリフレッシュ等の方法が記載されています。

株式会社パソナ もうイライラしなくていいんです。Excelを軽くする2つの方法
http://labo.pasona.co.jp/confotable_two_way_to_u …

A 回答 (3件)

コメントでも大量に入力されたのでしょうか。

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

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

私ならまずオートシェイプやテキストボックスを疑います。



【透明で目に見えない状態】や【重なって一つに見える状態】のものが、
コピー&ペーストの度に倍々で増えている可能性があります。
操作次第では、十数回コピー&ペーストを繰り返しただけで、
元々1つしかなかったものが、千枚以上に増えてしまいます。

試しに、
問題のブックの各シートで、テキストボックスを一つ追加してみてください。
[名前]ボックスに、シェイプの通しNo.が表示されるはずですが、
巨大な数字になっていませんか?

参考画像のブックは、表示されている部分以外には何もないのですが、
テキストボックスが千単位で重なっているので1.5MBほどあります。

ワークシート上のオブジェクトを一括して削除するには、
[Ctrl]+[G] ⇒ [Alt]+[S] ⇒ [Alt]+[B] ⇒ [Enter] ⇒ [Delete]
とします。

ご参考まで。
「Excel)軽いデーターのはずなのに、メ」の回答画像3
    • good
    • 21
この回答へのお礼

ありがとうございます。
いろいろ試したのですが、原因が分からないので作り直す事にしました。
皆さんありがとうございました。

お礼日時:2009/07/09 13:37

>写真、画像、マクロ、一切ありません。


とのことですが、やはり「マクロ」が気になります。
何かしらのイベントで何かしらの書き込みをしていないかなぁ・・っと。
もう一度、「ThisWorkBook」を含めてマクロがないか確認してみてください。

次に共有フォルダから落としたという点。
もちろんショートカットではなく、コピーして貼り付けですよね?
共有サーバのファイルを開こうとすると時間がかかることはありますが(それにしてもかかりすぎですが・・・)、完全にローカル依存であれば、通常そんな時間はかかりません・・^^;

最後に・・・ブック自体が共有化されている・・・(とはいってもローカルに落としてることを前提に考えると、完全にこじ付けで矛盾しますが・・^^;)
ツール→ブックの共有で確認してみてください。
「複数のユーザが~・・」のチェックボックスにチェックは入っていませんか?
また「現在ブックを開いている~・・」の欄に挙げられているのは質問者様だけですか?
もしチェックが入っているなら外し、複数人挙がっているなら質問者さま以外消してみてください。

すみません。参考にもなってないかも・・^^;
    • good
    • 2

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

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

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QPDFのPPへの貼付け方について

PDFをPowerPointに貼り付ける仕方を
教えて頂けないでしょうか。
Acrobatが無いと出来ないのでしょうか。

WinXP、OfficeXP、AcrobatReader5.0です。

よろしくお願いいたします。

Aベストアンサー

カメラの形のアイコン
「スナップショットツール」
をクリックして
コピーしたい範囲を選ぶとクリップボードにコピー
されるので
PP上で貼り付けすればできるはずです。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

QエクセルVBAで書式と値の貼付けにつて

エクセル2007VBAで新規ファイルを作る場合のコピー、貼り付けで質問しましたが
式も全て貼り付けになるとUSBメモリーで持ち出した場合、エラーとなります。
それで値と書式のみ貼り付けする様下記の様に書き直しましたが、.PasteSpecialでメソッドまたはデータメンバーが見つかりませんとなります。
ぐぐっててヘルプを見ますが解決出来ません。どなたがご教授お願いします。

元の式
Sub DGCopy()
Workbooks.Add
With ThisWorkbook
.Sheets(5).Cells.Copy Sheets(1).Cells
Sheets(1).Select
Sheets("Sheet1").Name = "電気代"
.Sheets(6).Cells.Copy Sheets(2).Cells
Sheets(2).Select
Sheets("Sheet2").Name = "ガス代"
F = Application.GetSaveAsFilename(FileFilter:="Excelブック (*.xls),*.xls)")
If F = "False" Then Exit Sub ' ダイアログでCancelをクリックした場合
ActiveWorkbook.SaveAs Filename:=CStr(F)
End With
End Sub

書き直した式
Sub DGCopy()
Workbooks.Add
With ThisWorkbook
Sheets(5).Select
Cells.Selection.Copy
Sheets(1).Selection
.PasteSpecial Paste:=xlPasteFormats ←エラー部分
.PasteSpecial Paste:=xlPasteValues
Sheets("sheets1").Name = "電気代"
Sheets(6).Select
Cells.Selection.Copy
Sheets(2).Selection
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
Sheets("sheets2").Name = "ガス代"
F = Application.GetSaveAsFilename(FileFilter:="Excelブック (*.xls),*.xls)")
If F = "False" Then Exit Sub
ActiveWorkbook.SaveAs Filename:=CStr(F)
End With
End Sub

エクセル2007VBAで新規ファイルを作る場合のコピー、貼り付けで質問しましたが
式も全て貼り付けになるとUSBメモリーで持ち出した場合、エラーとなります。
それで値と書式のみ貼り付けする様下記の様に書き直しましたが、.PasteSpecialでメソッドまたはデータメンバーが見つかりませんとなります。
ぐぐっててヘルプを見ますが解決出来ません。どなたがご教授お願いします。

元の式
Sub DGCopy()
Workbooks.Add
With ThisWorkbook
.Sheets(5).Cells.Copy Sheets(1).Cells
Sheets(1).Select
...続きを読む

Aベストアンサー

なるほど。

元のご質問:
>式も全て貼り付けになるとUSBメモリーで持ち出した場合、エラーとなります。

これが何故なのか,が判ってないからですね。
(といっても実はこちらも,アナタが一体どんな・何を「エラー」といってるのか,ホントの所はさっぱり不明なんですが,一応ご説明の様子からかろうじて推測しています)

あなたが言ってる"エラー"というのは必ずしも正しい表現じゃありませんが,「関数式があるから」エラーになるんじゃありません。
シートを(数式を)コピーしたときに,元に残しておいたシートに参照(リンク)が残っている時に,「他のパソコンに持って行くと」問題が起こります。
回答したのは,その「問題が起きる式」だけを潰し,問題にならない他の計算式(たとえばシート内で隣のセルを参照する,SUMを求める,みたいな単純なヤツ)はそのまま残すマクロです。



まぁでもアナタの思うとおりどうしてもヤリタイなら,次のようにしてみたらどうでしょう。
#スミマセンが,No.1の方へのご質問はNo.1の方にお願いします。


sub macro3
 dim w as workbook
 dim myfile as variant
 set w = workbooks.add

’コピーし,数式は全て潰す。
’アナタの提示のマクロは「どこから」コピーしたいのかいつも違うので,適切に漏れなく直してください
 with w.worksheets(1)
  .name = "電気代"
  thisworkbook.worksheets(シートの番号).cells.copy .range("A1")
  .usedrange.value = .usedrange.value
 end with

 with w.worksheets(2)
  .name = "ガス代"
  thisworkbook.worksheets("シート名").cells.copy .range("A1")
  .usedrange.value = .usedrange.value
 end with

’保存
 myfile = application.getsaveasfilename(fileFilter:="Excelブック (*.xls),*.xls)")
 if myfile = False then exit sub
 activeworkbook.saveas filename:=myfile
end sub

なるほど。

元のご質問:
>式も全て貼り付けになるとUSBメモリーで持ち出した場合、エラーとなります。

これが何故なのか,が判ってないからですね。
(といっても実はこちらも,アナタが一体どんな・何を「エラー」といってるのか,ホントの所はさっぱり不明なんですが,一応ご説明の様子からかろうじて推測しています)

あなたが言ってる"エラー"というのは必ずしも正しい表現じゃありませんが,「関数式があるから」エラーになるんじゃありません。
シートを(数式を)コピーしたときに,元に残しておい...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

QVBAでファイルを開いてないときに開くコード

いつもお世話になります。
VBA(Excel2007)の初心者です。

目的のファイルが開いていない時は開き、
既に開いている時は何もしない。
という処理をしたいと思い以下のコードを
書きました。

Dim wb As Workbook
Dim myfilename As String

For Each wb In Workbooks
If wb.Name = "予定表.xls" Then
Exit For
Else
myfilename = "\\___\__\予定表.xls"
Workbooks.Open Filename:=myfilename
End If
Next wb

実行したら何度もファイルを開こうとしてしまいます。
どこに問題があるのでしょうか?

ちなみにこれは"予定表.xls"のセルを参照したくて
ある処理の前に実行するつもりなのですが、
別のブックのセルを参照するときはやはり
そのブックを開かなくてはならないのでしょうか?

何卒よろしくお願いします。

いつもお世話になります。
VBA(Excel2007)の初心者です。

目的のファイルが開いていない時は開き、
既に開いている時は何もしない。
という処理をしたいと思い以下のコードを
書きました。

Dim wb As Workbook
Dim myfilename As String

For Each wb In Workbooks
If wb.Name = "予定表.xls" Then
Exit For
Else
myfilename = "\\___\__\予定表.xls"
Workbooks.Open Filename:=myfilename
End If
Next wb

実行したら...続きを読む

Aベストアンサー

こんにちは。

こんなスタイルになります。

'-------------------------------------------
Sub Test1()
  Dim Wb As Workbook
  Dim mPath As String
  Const FNAME = "予定表.xls" 'ファイ名
  mPath ="\\___\__ & "\" 'ディレクトリパス--'規定の場所は、Application.DefaultFilePath & "\"
  
  On Error GoTo Errhandler
   Workbooks(FNAME).Activate
  '------------------------------------------- ここから実際のプログラム
   Set Wb = Workbooks(FNAME)
   MsgBox Wb.Name & " " & Wb.ActiveSheet.Name
  
  Exit Sub
Errhandler:
  If Err.Number = 9 Then
    Workbooks.Open mPath & FNAME
    Resume Next
  End If
End Sub

こんにちは。

こんなスタイルになります。

'-------------------------------------------
Sub Test1()
  Dim Wb As Workbook
  Dim mPath As String
  Const FNAME = "予定表.xls" 'ファイ名
  mPath ="\\___\__ & "\" 'ディレクトリパス--'規定の場所は、Application.DefaultFilePath & "\"
  
  On Error GoTo Errhandler
   Workbooks(FNAME).Activate
  '------------------------------------------- ここから実際のプログラム
   Set Wb = Workbooks(FNAME)
  ...続きを読む

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qセルの文字列を取り出して一つのセルに入れる方法

セルの文字列を取り出して一つのセルに入れる方法

こんにちは。
VBAの初心者のものです。
データ整理をしていたのですが、
次の様な場合、どのようにすればいいでしょうか。

例)
年度別、都道府県別の地震の発生件数のデータがあります。
これで1999年の地震が起こった都道府県を抽出するとします。
1999年の列でオートフィルタをかけ別のシートでまとめようと思います。

各年度でオートフィルタをかけて、次のようにまとめます。

1999年 北海道、宮城県、東京都
2000年 新潟県、静岡県、岡山県、石川県
2001年 福島県、宮城県、千葉県
2002年 愛知県、三重県、京都府

なお、都道府県のところはできれば一つのセルにいれたいと考えています。

1999年の場合なら
Range("").value=北海道のセル&"、"& 宮城県のセル &"、"&東京都のセル
各都道府県の行番号が
北海道「1」
宮城県「4」
東京都「13」
ならば、
range("").value = range("A1").value&"、"&range("A4").value&"、"&range("A13").value

というようになればいいのですが、
オートフィルタ後に行数をカウントし、次のようなコードにすると、

range("").value = range("A1").value&"、"&range("A2").value&"、"&range("A3").value

1999年 北海道、青森県、岩手県

となりオートフィルタ前の値が返されてしまいます。
このセルをどのように指定したらいいのかわかりません。

もしこれができないのであれば
各列に一つずつ(一つのセルに一つの都道府県)入れていく方法でも構いません。

1999年 北海道 宮城県 東京都 

というような感じです。

よろしくお願いします。

セルの文字列を取り出して一つのセルに入れる方法

こんにちは。
VBAの初心者のものです。
データ整理をしていたのですが、
次の様な場合、どのようにすればいいでしょうか。

例)
年度別、都道府県別の地震の発生件数のデータがあります。
これで1999年の地震が起こった都道府県を抽出するとします。
1999年の列でオートフィルタをかけ別のシートでまとめようと思います。

各年度でオートフィルタをかけて、次のようにまとめます。

1999年 北海道、宮城県、東京都
2000年 新潟県、静岡県、...続きを読む

Aベストアンサー

オートフィルタで抽出された行だけ対象にして処理する例です。ご参考まで。
連想配列向けの課題かもしれません。興味を持たれたら、VBA dictionaryでお調べ下さい。
Sub test()
Debug.Print funcTest("1999年")
End Sub

Private Function funcTest(targetYear As String) As String
Dim targetRange As Range
Dim i As Long
Dim prefNames As String

With ActiveSheet
Set targetRange = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)).Resize(, 3)
End With
With targetRange
.AutoFilter Field:=1, Criteria1:=targetYear
For i = 2 To .Rows.Count
If .Cells(i, 1).EntireRow.Hidden = False Then
If prefNames = "" Then
prefNames = .Cells(i, 2).Value
Else
prefNames = prefNames & "," & .Cells(i, 2).Value
End If
End If
Next
.AutoFilter
End With
funcTest = prefNames
End Function

参考URL:http://okwave.jp/qa/q5694462.html

オートフィルタで抽出された行だけ対象にして処理する例です。ご参考まで。
連想配列向けの課題かもしれません。興味を持たれたら、VBA dictionaryでお調べ下さい。
Sub test()
Debug.Print funcTest("1999年")
End Sub

Private Function funcTest(targetYear As String) As String
Dim targetRange As Range
Dim i As Long
Dim prefNames As String

With ActiveSheet
Set targetRange = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)).Resize(, 3)
End With
With targetR...続きを読む

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Q新規文書を開くと既存の文書が開きます

WORD2000を使っています。
新規文書を開くと、前回作成した文書が開いてしまいます。
前回文書を作成して保存するとき、テンプレートが壊れているとのメッセージが出ました。
どうすればよいのでしょうか?

Aベストアンサー

http://support.microsoft.com/kb/880995/ja

normal.dotファイルを再作成してください。

詳しくは↑のリンク先で、解説付きで載っています。


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

人気Q&Aランキング

おすすめ情報