2013-06-14 4 views
11

Mój plik excel zawiera wiele formuł i dlatego chcę ustawić tryb obliczeniowy na ręczny, gdy tylko zostanie otwarty. W przeciwnym razie obliczenia rozpoczynają się automatycznie i muszę czekać godzinami. Znalazłem tę stronę:Jak ustawić tryb kalkulacji na ręczny przy otwieraniu pliku Excel?

http://excel.tips.net/T001988_Forcing_Manual_Calculation_For_a_Workbook.html

który powinien być w stanie wykonać trick. Jednak nie działa dla mojego pliku excel. Stwierdza, że ​​w kodzie VBA, w sekcji „ThisWorkbook”, następujący kod należy wpisać:

Private Sub Workbook_Open() 
    Application.Calculation = xlManual 
    Application.CalculateBeforeSave = False 
End Sub 

Jak zauważył go, to nie działa w moim przypadku. Czy ktoś ma alternatywne rozwiązanie?

Z góry dziękuję!

+6

Ten problem polega na tym, że jeśli Excel jest w trybie automatycznego obliczania przed otwarciem pliku, spowoduje wyzwolenie obliczenia przed zdarzeniem "Workbook_Open". Hackem, któremu kazano mi ominąć, jest otworzenie pustego skoroszytu z 'Application.Calculation = xlCalculationManual' w tym wydaniu 'Workbook_Open', a następnie wywołanie twojego arkusza potworów. –

Odpowiedz

7

Najlepszym sposobem na utworzenie pliku Excel o nazwie "launcher.xlsm" w tym samym folderze, co plik, który chcesz otworzyć. W pliku "launcher" umieść następujący kod w obiekcie "Workbook", ale ustaw stałą TargetWBName jako nazwę pliku, który chcesz otworzyć.

Private Const TargetWBName As String = "myworkbook.xlsx" 

'// First, a function to tell us if the workbook is already open... 
Function WorkbookOpen(WorkBookName As String) As Boolean 
' returns TRUE if the workbook is open 
    WorkbookOpen = False 
    On Error GoTo WorkBookNotOpen 
    If Len(Application.Workbooks(WorkBookName).Name) > 0 Then 
     WorkbookOpen = True 
     Exit Function 
    End If 
WorkBookNotOpen: 
End Function 

Private Sub Workbook_Open() 
    'Check if our target workbook is open 
    If WorkbookOpen(TargetWBName) = False Then 
     'set calculation to manual 
     Application.Calculation = xlCalculationManual 
     Workbooks.Open ThisWorkbook.Path & "\" & TargetWBName 
     DoEvents 
     Me.Close False 
    End If 
End Sub 

Ustaw stałą "TargetWBName" na nazwę skoroszytu, który chcesz otworzyć. Ten kod po prostu przełączy obliczenia na ręczne, a następnie otworzy plik. Plik programu uruchamiającego automatycznie się zamknie. * UWAGA: Jeśli nie chcesz wyświetlać monitu o "Włączanie zawartości" przy każdym otwieraniu tego pliku (w zależności od ustawień zabezpieczeń), powinieneś tymczasowo usunąć "me.close", aby zapobiec jego zamknięciu, zapisz plik i ustawić go jako zaufany, a następnie ponownie włączyć wywołanie "me.close" przed ponownym zapisaniem. Ewentualnie możesz ustawić False na True po Me.Close