_ExcelSaveAsEX (Excel 2007-2010)

  • Da die Standardfunktion von AutoIt für die neuen Excelversionen nicht mehr funktioniert, hab ich eine neue Funktion dafür geschrieben.
    Derzeit kann man als xlsx, xlsb, xlsm, csv, txt, prn und xls Speichern, andere Dateiendungen such ich noch raus und editier sie dann hier rein

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name: _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    ; Description: Speichert eine Exceldatei in einem bestimmten Format ab
    ; Parameter(s): $oExcel Ein Excelobject, wie es von _ExcelbookOpen oder _ExcelbookNew zurückgegeben wird
    ; $Fileformat Der Dateityp, in dem gespeichert werden soll (xlsx, xlsb, xlsm, xls, csv, txt, prn)
    ; $NewFilepath Speicherort und Dateiname der neuen Datei
    ; $Close = True Soll nach dem Speichern das Objekt geschlossen werden? (Standard = True)
    ; Return Value(s): Erfolg Gibt 1 zurück
    ; Fehler @error 1 - $oExcel ist kein Objekt
    ; 2 - $Fileformat ist keine bekannte Dateiendung oder Formatnummer
    ; Author(s): TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Copyright: TheLuBu ([email='LuBu@veytal.com'][/email])
    ;===============================================================================
    Func _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
    Switch $Fileformat
    Case 51, "xlsx", ".xlsx"
    $Fileformat = 51
    Case 50, "xlsb", ".xlsb"
    $Fileformat = 50
    Case 52, "xlsm", ".xlsm"
    $Fileformat = 52
    Case 6, "csv", ".csv"
    $Fileformat = 6
    Case -4158, "txt", ".txt"
    $Fileformat = -4158
    Case 36, "prn", ".prn"
    $Fileformat = 36
    Case 56, "xls", ".xls"
    $Fileformat = 56
    Case Else
    Return SetError(2, 0, 0)
    EndSwitch
    With $oExcel
    .Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
    .ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
    If $Close Then
    .ActiveWorkbook.Close ; Schließt die Tabelle
    .Quit ; Schließt das Workbook
    EndIf
    EndWith
    Return 1
    EndFunc ;==>_ExcelSaveAsEX

    [/autoit]