Excel, ende der Tabelle abschneiden

  • Hallo,

    Versuche nun schon seit Tagen es hinzubekommen das meine Tabellen richtig ausgedruckt werden.

    Derzeitig sieht das so aus:
    [Blockierte Grafik: http://www.imgbox.de/users/jojono/autoit/Bild1.JPG]

    Habe dank BugFix es hinbekommen jede zweite Spalte blau zu hinterlegen.

    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $i = 8
    While $i <= $Zeilenanzahl
    $oExcel.Rows($i).Interior.ColorIndex = 34
    $i += 2
    WEnd

    [/autoit]


    Wenn ich nun die Tabelle ausdrucke werden die blauen Spalten leider über der Tabelle hinaus auch mit ausgedruckt.

    Habe so einiges probiert" siehe hier " aber bekomme es einfach nicht hin.
    kann man die Spalten so formatieren das sie am Ende der Tabelle aufhören ?
    kann man am Ende der Tabelle alles abschneiden (löschen) ?
    Komme einfach nicht weiter.


    mfg
    oh-ha

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

    Einmal editiert, zuletzt von oh-ha (16. Juli 2010 um 20:31)

  • Danke schon mal für die Antwort.
    Das Problem ist auch das die Tabellen unterschiedlich lang sind also das Ende nicht festgelegt ist.
    Und da bin ich schon wieder in meiner Denk-schleife.
    Du hast mir ja mal das gegeben damit ich die Bezeichnung von letter auf Zahl und umgekehrt machen kann.

    [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]


    Nur komme ich damit gar nicht klar.

    mfg
    oh-ha

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

    • Offizieller Beitrag

    Probier mal zum Druckbereich setzen:

    [autoit]

    Local $sFilePath = 'Deine XLS'
    Local $oExcel = ObjCreate("Excel.Application")
    Local $oBook = $oExcel.WorkBooks.Open($sFilePath, Default, False)
    Local $oSheet = $oBook.Worksheets.Item(1) ; oder anderes Tabellenblatt, auch "Tabelle Name" möglich
    $oSheet.Range("C10:K30").Select
    $oExcel.ActiveSheet.PageSetup.PrintArea = "$C$10:$K$30" ; Druckbereich

    [/autoit]


    Na die Funktionen zum Wandeln sind doch eindeutig. Du gibst die Spalte als String (z.B. 'AS') ein bekommst dafür die Spalte als Zahlwert zurück und umgekehrt.

  • Sorry fürs warten,

    wollte es nur komplett durchtesten bevor ich was sage.
    Also bei mir geht es so nicht. Die Formatierung der Spalten geht immer noch über die Tabelle hinaus.
    Kann oder könnte man nicht während der Formatierung der Spalten die länge bestimmen ?
    Ist nur so ein Gedanke von mir, da ich auch nicht weiß wie man das machen könnte.
    Das Ende der Tabelle bekomme ich ja, müßte das " nur " in die Schleife mit einbauen in der jede zweite Spalte blau gemacht wird.


    mfg
    oh-ha

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

    • Offizieller Beitrag

    So geht es:

    [autoit]

    $oExcel = ObjGet('', 'Excel.Application')
    $firstCol = 'A' ; Startspalte
    $lastCol = 'AM' ; Endspalte
    $firstRow = 8 ; erste Datenzeile
    $lastRow = 40 ; letzte Datenzeile

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

    With $oExcel.ActiveWorkbook.Sheets(1)
    For $i = $firstRow To $lastRow
    If Mod($i, 2) Then ; ungerade Zeile
    .Range($firstCol & $i & ':' & $lastCol & $i).Interior.Color = 0xCCFFCC
    Else
    .Range($firstCol & $i & ':' & $lastCol & $i).Interior.Color = 0xCCFFFF
    EndIf
    Next
    EndWith

    [/autoit]
  • Oh man,

    ein dickes DANKE dafür und das auch noch zweifarbig. Kannst dir nicht Vorstellen wie lange ich schon darüber am Grübeln bin.


    mfg
    oh-ha

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