Excel, sheet kopieren und wieder einfügen in neuen sheet

  • moin moin,


    Habe mal " WIEDER " ein problem mit Excel.
    Möchte die Tabelle komplett auschneiden, da über die Ränder hinaus noch Rahnenlinien sind und andere Formatierungen die man sieht.
    Dann die kopierte Tabelle in einen neuen Sheet wieder einfügen.
    Nur bleibe ich immer an dieser Zeile hängen " $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Select " und " $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Activate "
    wobei diese geht "$oExcel.Range($oExcel.cells(1,1),$oExcel.cells($Zeilenanzahl2,$Spaltenanzahl)).Select "

    Der Code:

    [autoit]


    ;Enden der Tabelle bestimmen
    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $Zeilenanzahl2 = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 3).End(-4162).Row ; -4162 = xlUp
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column ; -4159

    [/autoit][autoit][/autoit][autoit]

    ;Tabellensheed kopieren und in neuen Sheed einfügen
    $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Select ;Vormals = $oExcel.Range("AM1").Select
    $oExcel.ActiveCell.FormulaR1C1 = ""
    $oExcel.Range($oExcel.cells(1,1),$oExcel.cells($Zeilenanzahl2,$Spaltenanzahl)).Select ;$ Vormals = oExcel.Range("A1,1:AM47").Select
    $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Activate ; Vormals = $oExcel.Range("AM1").Activate
    $oExcel.Selection.Copy
    $oExcel.Sheets("TestTabelle").Select
    $oExcel.Sheets.Add
    $oExcel.ActiveSheet.Paste
    $oExcel.Sheets("TestTabelle").Select
    $oExcel.application.displayalerts = false
    $oExcel.ActiveWindow.SelectedSheets.Delete
    $oExcel.Sheets("Tabelle1").Select
    $oExcel.Sheets("Tabelle1").Name = "Zweite Testtabelle"
    $oExcel.application.displayalerts = True

    [/autoit]


    Wie muß ich die Zeilen ändern damit Excel damit arbeiten kann ?

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    2 Mal editiert, zuletzt von oh-ha (16. Juli 2010 um 20:32)

  • Habe mal das von BugFix bekommen, würde mir dabei ja schon helfen, nur komme ich damit nicht klar.


    [autoit]


    Func _LetterToColNr($sLetter)
    If StringLen($sLetter) = 1 Then Return Asc(StringUpper($sLetter)) -64
    Return (Asc(StringUpper(StringLeft($sLetter, 1)))-64)*26 + (Asc(StringUpper(StringRight($sLetter, 1)))-64)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    EndFunc

    [/autoit]


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit