Berechnungsoption in Excel über Visual Basic ändern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Ferenz.

    Berechnungsoption in Excel über Visual Basic ändern

    Hallo VB Spezialisten,
    trotz meiner Recherche im Internet finde ich immer nur eine Lösung, die jedoch einen Fehler auslöst :( . Das Forum ist jetzt meine letzte Hoffnung und hoffe mir kann jemand helfen.
    Ausgangssituation:
    Im Rahmen eines größeren Programmes habe ich eine VB-Klasse erstellt, die die Excel-Applikation öffnet und das Workbook und Worksheets deklariert und auch ansprechen kann. Davor möchte ich jedoch die Berechnungsoption von der Excel-Applikation auf manuel setzen, damit die Performance während der Bearbeitung der Excel-Datei erhöht wird.
    Vorgehensweise:
    Ich habe zunächst den Projekt-Verweis "Microsoft.Office.Interop.Excel" erstellt. Dann habe ich folgenden Code erstellt:

    VB.NET-Quellcode

    1. #Region "Declarations"
    2. Private excelApp As New Excel.Application
    3. Private excelWorkbook As Excel.Workbook
    4. Private workbookName As String
    5. Private excelWorksheet As Excel.Worksheet
    6. Private strReferenceStyleStatus As String
    7. Private sngScreenUpdateState As String
    8. #End Region
    9. Sub PerformOn()
    10. excelApp.Interactive = False
    11. '--- Save ReferenceStyle status
    12. 'strReferenceStyleStatus = excelApp.ReferenceStyle.ToString
    13. '--- Save screenupdating status
    14. sngScreenUpdateState = CType(excelApp.ScreenUpdating, String)
    15. '--- Deactivate Excel standard functions
    16. excelApp.ScreenUpdating = False
    17. excelApp.Calculation = Excel.XlCalculation.xlCalculationManual
    18. excelApp.DisplayAlerts = False
    19. excelApp.AskToUpdateLinks = False
    20. excelApp.EnableEvents = False
    21. '--- Deaktivate automatism
    22. excelApp.AutoCorrect.AutoFillFormulasInLists = False
    23. '--- ReferenceStyle
    24. If excelApp.ReferenceStyle = Excel.XlReferenceStyle.xlR1C1 Then excelApp.ReferenceStyle = Excel.XlReferenceStyle.xlA1
    25. End Sub


    Bei der 19. Zeile "excelApp.Calculation = Excel.XlCalculation.xlCalculationManual" bekomme ich immer folgenden Fehler "excel.App.Calculation 'löste eine Ausnahme des Typs 'System.Runtime.InteropService.COMException" aus.
    Wenn ich mit F11 den Einzel-Schritt durchführe, dann löst es die folgende Exception im Try....Catch ex As Exception...End Try aus "Ausnahme von HRESULT: 0x800A03EC". Der Try...Catch - Befehl ist in einer anderen übergeordneten Methode.

    Kann mir jemand einen Tipp geben?

    Besten Dank
    Ferenz

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Ferenz“ ()

    In einem Thread bei stackoverflow fand ich die Lösung, die ich auch bestätigen kann: Erst ein Workbook öffnen, dann die Calculation-Eigenschaft setzen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    Super, genau daran lag es :) , danke. Jetzt weiss ich auch wie ich heraus finden kann, welche Optionen in der Applikation bzw. in der Datei abgespeichert werden.

    Hallo Petaod,
    ja der Wert steht drin. Was bringt es den Try...Catch raus zu nehmen?

    Danke schön für Dein Feedback

    Gruß
    Ferenz