• ベストアンサー

Excel計算方法変更時の変更保存表示をなくす方法

Excelのマクロで、処理を高速化するために、 マクロ実行中にApplication.Calculationを一度xlManual(手動)に変更し、 マクロの最後で計算方法を元に戻すようにしています。 この処理を行うと、マクロが記載されているファイル自体に変更を行なっていなくても マクロファイルを閉じる際に「<ファイル名>への変更を保存しますか」というダ イアログが出てしまうのですが、 この表示を出さないようにすることはできませんでしょうか?  <動作環境>  Windows XP  Excel 2003または2007

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

application.calculation = xlcalculationautomatic 対象ブック.saved = true としておきます。

go-go-goo
質問者

お礼

ご回答ありがとうございます。 savedプロパティをマクロ開始時点で保存しておき、 マクロ終了時に復元したところ、やりたいことができました。 的確なご回答いただき、まことにありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

対象のブック.close savechanges:=false と書いてブックを閉じます。

go-go-goo
質問者

補足

ご回答いただき、まことにありがとうございます。 マクロを記載したブックのクローズは手動で行いたいを思っています。 また、マクロを記載したブックは通常のファイル同様編集(メモの記載等)する場合もあり、 その場合は通常通りのダイアログを表示したいです。 Application.Calculationの変更内容を ファイルの変更と認識させない方法はないでしょうか?

関連するQ&A

  • エクセルVBAのChangeイベント時の再計算

    掲題の件ですが、VBAにて、 あるセルの値を変更したときに処理を行うChangeイベントについて困っております。 処理速度向上の為、この処理を行う際、再計算の処理を行わないようにしたいのですが、 Application.Calculation = xlCalculationManual を処理の頭に入れても、 Changeイベント発生→再計算処理→再計算を手動にする処理→本処理 となってしまうため、上手くいきません。 何かいい手立てはないものでしょうか。 エクセル2010です。

  • VBからExcelファイルを開くときの再計算の解除方法

    VB6.0からExcelファイルを開くときに、 再計算処理が走ってしまい、 大きなファイルの場合とても時間がかかってしまっています。 開く前に、再計算は行わないで開く。 などの設定はできませんか? Dim xlsObj As Excel.Application ' ココに入れてもまだExcelオブジェクトが生成されていないのでエラー //xlsObj.Calculation = xlCalculationManual Set xlsFile = xlsObj.Workbooks.Open(ファイルパス) ' ココに入れたらファイル開いて再計算処理が走ったあとなので、すでに手遅れ。 //xlsObj.Calculation = xlCalculationManual なにかいい案がありましたら、 教えてください。

  • エクセルの特定シートを完全に手動計算にする方法

    こんにちは。 エクセルのVBAについて最近勉強を始めた初心者です。 下記について知恵をお借りしたく、質問させて頂きます。 4つのシートで構成されているブックがあります。(他ブックとの連動はありません) シート1は集計表で、シート2~4はシート1の元データーが入っています。 本体はシート1のみ手動計算にしたいのですが、現状は以下の方法を取っています。 (1)ブックを開くと、ブック全体を手動計算にする (2)必要なタイミングで、シート1の特定セル範囲(3パターンあり)を再計算させるマクロを実行 (3)ブックを閉じると、自動計算に戻す こちらの方法でほぼ問題無いように思えたのですが、 ブックを閉じる時にエクセルの仕様で『'ファイル名.xls'への変更を保存しますか?』と聞かれますよね。 そこで"キャンセル"を選択すると、ブックは開いたまま自動計算モードに戻る=シート1が再計算されてしまうのです。 (このタイミングで(3)(Workbook_BeforeClose)のコードが走っているのだと思います) 先述の通り、本来手動計算にしたいのはシート1に限定されており、 シート2~4は自動計算で構いません。 やりたい事をまとめると、 ■ブックを開く  :シート1=手動計算、シート2~4=自動計算 ■ブックを閉じる:シート1=自動計算に戻す、ただしキャンセルした場合は手動計算モードを保持 現在のWorkbook_BeforeClose~の部分に何らかのコードを加えたら実現可能? とも思いますが、そこが分からず行き詰っています…。 上記実現するために良い方法がありましたら、ご教示お願いいたします。 【This Wook Book】に記述しているコード----------------------- Private Sub Workbook_Open() 'ブックを開くと手動計算にする Application.Calculation = xlCalculationManual End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックを閉じると自動計算に戻す Application.Calculation = xlCalculationAutomatic End Sub -----------------------------------------------------

  • Excel で日付入力したらマクロが動く方法

    Excel 2003 です。(OSはXP) データ用のエクセルファイルからマクロでコピー貼り付けをする日報ファイルを作っています。構成シートが7枚、マクロは12モジュール、ファイルサイズが140MBという巨大なものです。 セルB2に日付を入力したとき、Macro1が動くようにしたいのですが、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$2" Then Exit Sub Else... 以外に何かうまい方法はないでしょうか? セルに値を入力、じゃなくて、何かのコントロールでもかまいません。 マクロで日付を読み込めることが必須条件です。 上述のマクロの活用方法はいろいろ読みましたが、処理に時間がかかって困っております。「全てのセルに変更が加えられたのを検知」するしか方法はありませんか? 一応、この Macro1 を呼び出す部分以外には Application.EnableEvents = False を入れて、Worksheet_Changeが反応しないように止めていますが、遅いような気がします。(計ったわけではないのですが。) この日報ファイル自体が、計算の塊で、1つのセルに数値を入力しただけで、再計算に1秒前後かかることがあります。 そこで、貼り付けのマクロ(Macro2)を動かすときには Application.Calculation = xlManual を入れたりもしているのですが(それでも貼り付けに1分30秒)、常に再計算をOFFにするわけにもいかず・・・。 だから「全てのセルに変更が加えられたのを検知」という命令は、時間短縮のため避けたいのです。 また、マクロの全てにEnableEventsを入れておくのも、見苦しくて。(新たにマクロを追加したらまた忘れずにEnableEventsを書かないといけない構造にしたくありません。) 「全てのセルに変更が加えられたのを検知」ではなく、特定のオブジェクトに日付が入力された・選択されたのをマクロの開始合図とすることはできませんでしょうか? 質問がわかりにくかったらすみません。よろしくお願いします。

  • Exselで1度の実行をせず2回目の時に実行させたい

    Exsel 2003で次のようなコードを実行するとき 15秒ごとに繰り替えし実行されるのですが、1度目は実行せずに2回目に実行したいのですがどうすればよいのですか教えてください。 お願いします。     Sheets("MAIN").Range("V10:Z98").Copy Destination:=Sheets    ("MAIN").Range("V9") Application.Calculation = xlAutomatic '関数再計算 Application.Calculation = xlManual '関数自動計算の停止

  • Excelの再計算を止めるマクロを教えて

    Excelで複雑な計算をさせるシートを作りました。 データ量が多いのと、計算式をビッチリ入れたため、ツール→オプション の「計算方法」を手動にしておいて、いくつかのデータをシートに貼り付けて「実行」ボタンを押すと再計算がスタートするように「マクロの記録」で設定しました。 しかし、このファイルを開いた状態で別のExcelを開くと、止めていた再計算がスタートしてしまいます。 この「実行」ボタンを押すまで再計算を強制的に止めておく方法はないでしょうか?

  • EXCELで、マクロ、VBAをクリックせずに実行する方法

    EXCELで、マクロ、VBAは普通、手動で「実行処理」をして動くものだと思いますが、EXCELファイルを開いた瞬間に自動で実行させる方法は有るのでしょうか? 方法が有れば是非教えて下さい。宜しくお願い致します。

  • VBA 起動時にエクセルの画面が表示されてしまう

    VBA 起動時にエクセルの画面が表示されてしまう こんにちは、VBA初めて1週間ぐらいの初心者です よろしくお願いします 動作環境として、OS:XP excel:excel2007 を使用しています まずはじめに、エクセルを開いて内容変更セーブして終了するというマクロを組んだのですが 別のプログラムから、 そのエクセルファイルに起動をかけて マクロを実行し終了するよう作りました。  /*** コード ***/ ThisWorkbook 0  Private Sub Workbook_Open() 1   Application.Visible = False          //エクセル画面を消す 2    3   call 内容変更し保存する関数()        // 標準モジュール内 SUB 関数 4    5   ThisWorkbook.Saved = True           // セーブしたことにする 6   If Workbooks.Count <= 1 Then Application.Quit // 他のエクセルが開いてない場合のみ終了する 7   ThisWorkbook.Close False            // エクセル終了 8  End Sub  /*** コード ***/ 質問1 ・1行目にエクセルの画面を消す関数を、プログラムの先頭に来ると思われる部分に入れて実行してみたのですが、 どうしても、起動してから画面を消す処理が始まるまでに、一瞬だけexcelのファイルが表示されてしまうのですが これを回避する方法はありますでしょうか? VBAを使ってマクロの処理をするのですが、 使う方にエクセルを使っているという事を悟られたくないのです 質問2 ・6行目、開いてるエクセルが自分だけの場合のみエクセルを終了すると組んだつもりなのですが、 処理を流すとエクセルで開いているファイルがすべて閉じてしまいます。 記述を間違えていたりしますか? 以上 ご教授お願いいたします <<検索ワード>> VBA VBA 起動画面表示 起動画面非表示 起動画面を出さない 起動画面を消す

  • Excelの一操作毎に数十秒自動計算するのを時間短縮する方法

    Excel 2003を使用しています。一つの処理をする毎に、十数秒かけて再計算処理をしています。これを数秒で終了させるには、どのような設定をしたらよいか教えていただけないでしょうか。 設定は、手動計算ではなく自動計算にしています。最近突然自動計算の処理に時間がかかるようになってしまったのですが、手動計算には変更したくありません。自分では認識していないうちに、Excelの設定を変更してしまったのかもしれません。

  • エクセル 計算方法が変わってしまいます

     職場の人からエクセルの事で質問されたのですが解決方法が分かりません。  あるエクセルのファイルを開くと「ツール」→「オプション」→「タブ:計算方法」内の計算方法の項目が手動になっていて、いつも自動に変えて保存するのですが、次に開くと手動に戻ってしまうらしいのです。  いちいち変更しなくても自動で設定を保存できないのでしょうか、どなたか解決方法がありましたらご教授くださいませ。  もしかしたらファイル自体が壊れているのかもしれないので、解決方法がないようでしたらスッパリあきらめて作り直します。

専門家に質問してみよう