• 締切済み

上書き保存の速度について・・・

fumufumu_2006の回答

回答No.3

>>Workbooks("入力.xls").Close SaveChanges:=True >>をコメントにして、実行しない場合の時間を比べてください。 >⇒1秒もかからず動作しました。 >>入力.xlsを保存する場合、ANo.1で行った作業を「入力.xls」に対しても行って、時間を比較してみてください。 >⇒やはり30秒程度かかりました。 これはやはり、「入力.xls」の上書き保存が重いという結論になると思います。 とりあえず、「入力.xls」を単体で開き(または問題のブックと同時に開き)、「入力.xls」を手動で上書き保存する場合の時間を調べてみてはどうでしょうか? それが30秒程度かかるなら、やはり原因は「入力.xls」です。 それが30秒程度かからないなら・・・困ったことになります(原因不明に戻ってしまう)。 以下は「入力.xls」が重い場合の話です。 ANo.1で書いている >[ツール][オプション]の[計算方法]タブで >[計算方法]で >手動 >[保存前に再計算]のチェックを外す >[ブックオプション] >[リモート参照を更新する]のチェックを外す >[外部リンクの値を保存する]のチェックを外す での速度変化で、どの部分の変更で保存時間が変わるかを調べる。 >Sub test() >Dim ws As Worksheet >For Each ws In ThisWorkbook.Worksheets >MsgBox ws.Name & "=" & ws.DrawingObjects.Count >ws.DrawingObjects.Delete >Next >End Sub でオブジェクトを消してみて、保存時間が変わるかを調べる。 で、軽量化を図る。 ちなみに「入力.xls」にはWorkbook_BeforeCloseは設定されていないですよね。 Workbook_BeforeCloseモジュールがある場合は、その内容によって対処が変わると思います。 これは下の保存せずに終了させる方法でも実行されてしまうので、問題になる場合があります。 一番簡単な方法は、「入力.xls」を上書きせずに終了する事ではないでしょうか? 試しに、 Workbooks("入力.xls").Close SaveChanges:=True を Workbooks("入力.xls").Close SaveChanges:=False にしてみてください。 短時間で終わるはずです。 「入力.xls」にも何かWorkbook_BeforeCloseのモジュールが設定されているばあいは、それを行わない場合の時間も調べてみてください。 もちろん「入力.xls」に変更されたデータがない(または保存しなくてもよい)場合です。 この時、保存が必要なデータは他のシート(データだけのシート(軽い))に保存して、「入力.xls」には保存が必要なデータがない状態にして保存せずに終了します。 データとインターフェースを別ブックに分離する方法は、ある程度大きなシステムになった場合には、いろいろな利点がある場合があります。 とりあえず、「入力.xls」の軽量化(とWorkbook_BeforeCloseがあれば中止)と保存せずに終了を試してみてはどうでしょうか?

add0804
質問者

補足

>「入力.xls」を手動で上書き保存する場合の時間を調べてみてはどうでしょうか? ⇒30秒くらいかかりますね。 (1)[保存前に再計算]のチェックを外す (2)[リモート参照を更新する]のチェックを外す (3)[外部リンクの値を保存する]のチェックを外す ⇒(1)をやった場合35秒、(2)・(3)はどちらも30秒 オブジェクトは「入力.xls」の中には存在しないので、これ以上の軽量化は難しい。 >「入力.xls」にはWorkbook_BeforeCloseは設定されていないですよね。 ⇒ThisWorkbookの中に、先ほどの l = (Sheets("Sheet1").Range("E1") + 1) * 17 Sheets("総合(乖離)").Range("B1:AL17").Copy Sheets("総合(乖離)").Range(Sheets("総合(乖離)").Cells(18, 2), Sheets("総合(乖離)").Cells(l, 38)).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("総合(乖離)").Range(Sheets("総合(乖離)").Cells(18, 2), Sheets("総合(乖離)").Cells(l, 38)).Copy Sheets("総合(乖離)").Range(Sheets("総合(乖離)").Cells(18, 2), Sheets("総合(乖離)").Cells(l, 38)).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Workbooks("入力.xls").Close SaveChanges:=True を記述しています。 >データとインターフェースを別ブックに分離する ⇒「入力.xls」は「判定一覧/xls」につながっていて、「判定一覧/xls」は 「入力.xls」に入力された得点データが集計されて一覧表示されるようになっています。 もし、「入力.xls」をデータとインターフェースに分けてしまうと、データを打ち込んだ後、 もしくは「判定一覧/xls」を開く前にインターフェース用のブックを開かなくてはいけなくなり 1つ作業工程が増えて面倒かなと思ったので、データとインターフェースをまとめました。 理想は、「得点を打ち込んだ後、一覧のブックを開けば値が反映されている」っていう感じなんですが 「入力.xls」をデータとインターフェースに分けてもできますか?

関連するQ&A

  • 助けて下さい 誤って上書き保存してしまいました

    業務中、エクセルのファイル名を誤って上書き保存してしまいました 本当は、上書き保存してはいけないファイルの名前で保存してしまいました 復旧方法を教えて下さい 「そのファイル名で保存して」と言われて上書き保存したエクセルデータは書き換えてはいけないファイルだったんです 2~3時間してから「アカンかったんよ~」と言われ青くなってます 助けて下さい

  • 【Access2013】 上書き保存と追加保存

    会社PCがWin10&Office2013へ交換されました。 Excelファイル(xlsx)で出力する際、保存場所とファイル名を自由に指定できるようにしたく添付画像のようなコードを作成しました。 しかし、同名ファイルがあっても「上書き保存しますか?」ダイアログが出ない上に、違うテーブルやクエリーをExcel出力すると1つのxlsxファイル内に別sheetで保存されます。 (例) Q_管理表というクエリーを管理表.xlsxという名前で出力    →続けてテーブル1というテーブルをExcel出力し管理表.xlsxに上書き保存すると管理表.xlsxの中に「Q_管理表」「テーブル1」という2つのsheetで保存される    →続けてQ_管理表を再度出力するとsheet「テーブル1」はそのままでsheet「Q_管理表」は上書きされる 1つのxlsxファイル内に別sheetで保存されるのはむしろ好都合なので、上書き保存と追加保存を選択できるようなコードはありませんか? できない場合は「上書き保存しますか?」ダイアログを出して上書き保存させたいです。

  • Excelの上書き保存

    作成したExcelファイルをダブルクリックで開くと、 どのファイルも必ず「ファイル名1.xls」という名前で開きます。 上書き保存をしようとすると 「ファイル名をつけて保存」の画面が出てきてしまいます。 Excelを起動してから、ファイルを開くと 通常通り、上書き保存もできますし、 ファイル名の後ろに1がついたりもありません。 業務上、作成したファイルを上書き保存することが多いので、 ダブルクリックでファイルが開き、 編集後はすんなり上書き保存ができるようにしたいのです。 分かる方は、解決策を教えてください! ファイルを開くときに名前が書き換わってしまうなんて事、 あるのでしょうか??

  • エクセルで、「開く」「保存」に30秒かかる

     エクセルで約80シート使っている1つのブックが、とても重く(動作が遅く)なってしまったので、軽くしたいのです。  ファイルを開くと約30秒、保存するのも約30秒かかってしまうのです。重く(動作が遅く)なった原因は、セルの「塗りつぶし」を80シートを一度にした事だと思います。  どうすれば、この状態を改善できるでしょうか?  1シート毎に印刷すればA4サイズになる書類で(全シート同じレイアウト)、60行×I列で空白セルが多く、そのブックのファイルサイズは769KBです。  これからもそのブックはよく使いますし、書類は増えていきます。

  • 上書き保存できなくて困っています。

    上書き保存できなくて困っています。 会社でネットワークが組まれている共有フォルダの中のファイルが上書き保存できません。 エクセルだと“ファイルを保存できませんでした” ワードだと“ネットワークまたはファイルアクセス権のエラーです。ネットワーク接続が切断された可能性があります” というメッセージがでます。 デスクトップなど、そのフォルダの外に別名で保存し、それをそのフォルダに入れると上書きできます。 どうすれば今まで通り普通に上書き保存できるのでしょうか。

  • 上書き保存しないと反映されない-EXCEL

    Win98でEXCEL2000を使用しています。 他の人に貸したエクセルファイルを返してもらったら、変な風になってしまいました。 元に戻す方法はありますか? A1セルに「508」という数値、 B1セルに「=A1」という数式が入っています。 A1セルを「742」という数値に変更すると、B1セルは「508」のままなのです。 B1セルはA1セルとリンクしている訳ですから、 A1,B1セル共、「742」と表示されていなければならないのですが… エクセルを上書き保存したり、B1セルをダブルクリックすると「508」に変わるのですが…

  • 「上書き保存確認ダイアログ」を出すには?

    エクセル2000をベースにマクロ(VBA)を使って、ある技術計算をさせています。 セルに計算の元になるデータを手入力するのですが、 最終的には、その元になるデータをテキストファイルとして保存させているのですが、保存先に同じファイル名(エクセルの方ではなく、テキストファイル)があっても強制的に上書きされてしまいます。 同じ名前が合った場合は、上書き保存確認のダイアログを表示させたいのですが、どのようにすればよいでしょうか? 保存するのは、入力したデータのテキストのみで、エクセルのファイルは保存しません。

  • エクセルで上書き保存すると

    ファイル名の後ろに[1]と付いて、上書きでなく別ファイルとして保存されてしまいます。 現金出納帳なので、どんどんたまるとどれが一番最近のものか分からなくなり、 間違いの元ですのでファイルは1つにしたいのですが 普通に上書き保存はできないのでしょうか。 エクセルで金額を記入して、普通に上書き保存のボタンを押しているだけなのですが、 それでは保存の仕方が違うのでしょうか。 ちなみに何回かは普通に上書き保存ができていたのですが、 何が原因か分かりません。 また、ファイルを一番最近のものだけ残して あとは削除しようとしましたが削除しても次にエクセルを開いた時には 元に戻ってファイルが出てきます。 説明が下手で申し訳ございませんが どなたか分かる方よろしくお願い致します。

  • エクセルで上書き保存できない

    会社のパソコンでサーバーにあるエクセルファイルを開き、編集後に上書き保存をしたところ、もう一度ファイルを開き直すと編集が無視されており、上書き保存ができていない状態でした。 一度自分のパソコンのハードに落としてからであれば上書き保存できるのですが、そのままサーバー上に保存しようとすると、無視されるようです。(エラーメッセージも出ません) 社内の別のパソコンの同じバージョンのエクセル2003だと同様の現象が起きますが、エクセル2007のバージョンのものだと、そのままサーバーに上書き保存できます。 OSはどれもWindowsXPです。ファイルはExcel97-2003ブックで互換性のあるものを使用しています。読取り専用ファイルでもありません。 おわかりになる方がいらっしゃれば、教えてください。

  • Excel VBA 保存 上書き保存されてしまう

    エクセルデータを閉じる時に元データとは違う場所にバックアップをとるように以下のようなコードを記述しました。(Excel内の一部のデータが何かしらのタイミングで消えてしまう現象が起き、どのタイミングで消えているのかを探るために誰かしらがデータを開いて閉じる時にその閉じた時間をファイル名にして保存させるというのが目的です) Sub Auto_Close() Worksheets("Sheet1").Select 'シート1を開く ThisWorkbook.Save '元データの保存場所に上書き保存 Filename = Format(Now(), "yyyy-mm-dd-hh-mm-ss") ThisWorkbook.SaveAs Filename:="\\●●\●●\●●\●●\●●\" & Filename & ".xlsm" '別の場所に名前をつけて保存 End Sub この別の場所に保存したデータ((1)とします)を開いて中身を確認してから閉じるともちろん再度閉じた時間をファイル名にして保存する((2))ことになるのですが、このとき上書きされるような形になってしまい(1)のデータが残りません。(1)が残るようにするにはどこを修正すればいいのでしょうか?