[[20250425114653]] 『自動計算のOFFの仕様について』(フリオ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『自動計算のOFFの仕様について』(フリオ)

ファイルの計算が実行されると重たいので手動計算にしています。しかし、ファイルを開いた時の最初の1回だけ自動で計算されてしまいます。そのため、開く時に重くなってしまいます。開く時も計算させない方法はありますでしょうか?
以下が構文です。

ThisWorkbookに
Private Sub Workbook_Open()
'データシートを手動計算にさせる
ThisWorkbook.Worksheets("データ").EnableCalculation = False
End Sub

リストシートに
Private Sub CommandButton1_Click()
ThisWorkbook.Worksheets("データ").EnableCalculation = True
ThisWorkbook.Worksheets("データ").EnableCalculation = False
End Sub

となっており、コマンドボタンを押したときだけ計算するようにしています。

また、Application.Calculation = xlManualを使用した方法を試して思い通りの動作になりましたが、他のファイルも手動計算になると知って断念しました。
よろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


www。。。こんにちわ ^^
どうせ、マクロをお使いなら、計算式を止めて全てマクロに変更。。。というのは
だめですか。。。← 暴言でしたら、お許しの上、このコメントは無視して下さいませ
でわ
m(__)mm(__)mm(__)m
(隠居Z) 2025/04/25(金) 12:59:44

>また、Application.Calculation = xlManualを使用した方法を試して思い通りの動作になりましたが、他のファイルも手動計算になると知って断念しました。

起動時にxlCalculationManualにして、
終了時にxlCalculationAutomaticに戻す。

じゃ駄目なんですか?
そのブック起動時に他のブックを開かなければ良い話ですけれど。

(ゆたか) 2025/04/25(金) 13:25:22


間抜けなコメントだったかな。
起動時には自動で計算されてしまうということか。
であれば、xlCalculationManualにするブックを別に作れば良いのかな。
終了時にはxlCalculationAutomaticで大丈夫ですよね。
まあ、ちょっと運用が面倒だけれど。
(ゆたか) 2025/04/25(金) 13:30:19

隠居Z様

確かにそれがよさそうですが、ファイルの修正が発生した時に他の人に修正できなくなると思っています。
ですので、まだ簡単な方の関数を使用しています。

ゆたか様
他のファイルも開くことがあるので他のファイルに影響するxlCalculationManualは使えないもしれません。
(フリオ) 2025/04/25(金) 15:52:01


以下では?

Excelを開く → [ファイル] → [オプション] → [数式] →
「ブックの計算」を 「手動」に設定すると
これで自動計算されなくなる。

コマンドボタンを押したときだけ
自動計算するようにするようにする。

Private Sub CommandButton1_Click()

    Dim calcSetting As XlCalculation

    ' 現在の計算モードを保存(他ブックへの影響防止)
    calcSetting = Application.Calculation

    ' 一時的に自動計算にして再計算を実行
    Application.Calculation = xlCalculationAutomatic
    ThisWorkbook.Worksheets("データ").Calculate

    ' 計算モードを元に戻す(手動に)
    Application.Calculation = calcSetting
End Sub

(暇な人) 2025/04/25(金) 16:07:45


暇な人様

やり方が悪いのか最初はいいのですが、2回目以降は自動計算に戻ります。
また、他のブックも手動計算になります。
(フリオ) 2025/04/30(水) 07:30:51


 該当ブックを開くためだけの専用ブックを作るのはどうでしょうか?
 新しいブックにこんなマクロを仕掛けます。

 Private Sub Workbook_Open()   
    Application.Calculation = xlManual    
    Workbooks.Open Filename:="該当ブックのフルパス・名前"    
    Application.Calculation = xlAutomatic    
    ThisWorkbook.Close False    
 End Sub

 簡単な検証ではうまくいきました。
 尚、最後の ThisWorkbook.Close False があるとマクロを無効にして開かないとマクロの修正などが出来ないので
 うまくいくまではコメントアウトしておくほうがいいかもしれません。
 
(純丸) 2025/05/01(木) 12:16:25

他のブックの影響を受けないよう、対象ファイルを最初に開くようにして
[ファイル] → [オプション] で手動計算設定後、必ずファイルを上書き保存してください

でVBAを以下のように修正するではどうでしょうか ?

Private Sub CommandButton1_Click()

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationAutomatic
        ThisWorkbook.Worksheets("データ").Calculate
        .Calculation = xlCalculationManual
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

(暇な人) 2025/05/01(木) 14:21:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.