2013-06-14 4 views
11

Meine Excel-Datei enthält viele Formeln und ich möchte daher den Berechnungsmodus auf manuell setzen, sobald er geöffnet wird. Ansonsten startet die Berechnung automatisch und ich muss stundenlang warten. Ich fand diese Seite:Wie wird der Berechnungsmodus beim Öffnen einer Excel-Datei auf manuell gesetzt?

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

die in der Lage sein sollte, den Trick zu tun. Aber es funktioniert nicht für meine Excel-Datei. Darin heißt es, dass in dem VBA-Code im Abschnitt „Thisworkbook“, sollte der folgende Code eingegeben werden:

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

Wie darauf hingewiesen, es ist nicht in meinem Fall nicht funktioniert. Hat jemand eine alternative Lösung?

Vielen Dank im Voraus!

+6

Dieses Problem ist, dass, wenn Excel in der automatischen Berechnung Modus vor dem Öffnen der Datei ist, wird es die Berechnung vor Ihrem 'Workbook_Open' Ereignis auslösen. Der Hack, von dem mir gesagt wurde, dass ich das umgehen soll, ist, eine leere Arbeitsmappe mit dem 'Application.Calculation = xlCalculationManual' in diesem' Workbook_Open' Event zu öffnen, dann rufe dein Monsterblatt an. –

Antwort

7

Der beste Weg um dies zu tun wäre, ein Excel namens 'launcher.xlsm' im selben Ordner wie die Datei zu erstellen, die Sie öffnen möchten. Fügen Sie in der Launcher-Datei den folgenden Code in das Objekt 'Arbeitsmappe' ein, aber setzen Sie die Konstante TargetWBName auf den Namen der Datei, die Sie öffnen möchten.

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 

Setzen Sie die Konstante 'TargetWBName' auf den Namen der Arbeitsmappe, die Sie öffnen möchten. Dieser Code wird die Berechnung einfach auf manuell umschalten und dann die Datei öffnen. Die Launcher-Datei wird sich dann automatisch schließen. * HINWEIS: Wenn Sie bei jedem Öffnen dieser Datei (abhängig von Ihren Sicherheitseinstellungen) nicht aufgefordert werden, den Inhalt zu aktivieren, sollten Sie vorübergehend die Datei "me.close" entfernen, um zu verhindern, dass sie sich selbst schließt, um die Datei zu speichern und legen Sie es als vertrauenswürdig fest, und aktivieren Sie den 'me.close'-Aufruf erneut, bevor Sie erneut speichern. Alternativ können Sie auch False auf True nach Me.Close

setzen
Verwandte Themen