Excel - Sheet duplizieren (heißt in Excel: "Kopie erstellen")

  • Hallo,

    ich finde keine passende Lösung/Möglichkeit....
    Alles markieren, kopieren und in ein neu angelegtes Tabellenblatt einfügen ist nicht die Lösung die ich suche.

    könnte mir bitte jemand helfen, der weiß ich zum Ziel komme (Excel - Sheet duplizieren (in Excel: Rechtsklick auf das Tabellenblatt -> Verschieben/Kopieren... -> "Kopie erstellen")) ?

    MfG

    Einmal editiert, zuletzt von treFFnix (12. August 2010 um 10:37)

  • hab mir im Moment so beholfen, dass ich in excel folgendes makro rein hab:

    Code
    Sub duplizieren()
    	ActiveSheet.Copy After:=Sheets(Sheets.Count)
    	Sheets(Sheets.Count).Name = "NeuerTabellenName"
    End Sub

    und das mit autoit aufrufe:

    Code
    Local $sheet = @ScriptDir & "\Excelmappe.xls"
    	Local $Obj1 = ObjGet($sheet)
    	$Obj1.Application.Run("duplizieren")

    ... aber das hab ich auch alles nur zusammengesucht/kopiert....
    kennt ihr eine bessere/direktere lösung (ohne ein makro ins excel machen zu müssen)?

    MfG

    • Offizieller Beitrag

    Ich hab mal schnell die nötige Funktion dafür geschrieben:

    Edit: Noch etwas gekürzt ;)
    Edit2: Noch zu lang ;)

    [autoit]


    ;===================================================================================================
    ; Tabellenblatt kopieren
    ; $oExcel Excel-Objekt
    ; $vCopySheet Integer oder Name des zu kopierenden Tabellenblatts (Standard = 1)
    ; $sNameNewSheet Name des neuen Tabellenblattes (Standard = "" - 'alter_Name (2)')
    ; $fBefore Kopie vor oder nach Original (True/False, Standard = False)
    ; Autor BugFix
    ;===================================================================================================
    Func _ExcelSheetCopy($oExcel, $vCopySheet=1, $sNameNewSheet='', $fBefore=False)
    With $oExcel
    .Sheets($vCopySheet).Select()
    If $fBefore Then
    .Sheets($vCopySheet).Copy(.Sheets($vCopySheet))
    Else
    .Sheets($vCopySheet).Copy(Default, .Sheets($vCopySheet))
    EndIf
    If $sNameNewSheet Then .ActiveSheet.Name = $sNameNewSheet
    EndWith
    EndFunc ;==>_ExcelSheetCopy

    [/autoit]