none
Powershell Excel Rahmen RRS feed

  • Allgemeine Diskussion

  • Hallo Kollegen,

    ich habe ein Script die funktioniert auch einwandfrei.

    ich möchte es optisch besser gestalten jedoch hab ich es nicht geschafft, für jede ausgefüllte Zelle Rahmen zu bilden.

    Ich schaffe es ganz Außenherum eine zu bilden oder um für jede Zelle, aber da sind auch die Diagonalen, Horizontale und Vertikale Linien die ich nicht haben will.

    Bitte helfe. habe in meinem Skript sehr viele Versuche drin.

    # Bestimmen der zu kopierenden Zellen
    
    $range1 ="D6:E144"
    
    $xlThin = 2
    
    $xlEdgeLeft = 7
    $xlEdgeTop = 8
    $xlEdgeBottom = 9
    $xlEdgeRight = 10
    
    $xlColorIndexBlack = 0 
    
    $xlContinuous = 1
    
    # Auswählen der Tabellen
    $Tabelle1 = 'C:\Users\Bayramuf\Desktop\SNOW\Auswertung Stand 2018.02.09.xlsx' 
    $Tabelle2 = 'C:\Users\Bayramuf\Desktop\SNOW-Berichte.xlsx' 
     
    # Excel COM erstellen 
    $xl = new-object -c excel.application
    $xl.displayAlerts = $false
    
    # Excel öffnen 
    $wb1 = $xl.workbooks.open($Tabelle1, $null, $true) 
    $wb2 = $xl.workbooks.open($Tabelle2)
    
    # Erste Tabelle Tabellenblatt drei die Zellen kopieren
    $ws1 = $wb1.WorkSheets.item(3)  
    $range = $ws1.Range($range1).Copy()
    
    # In die zweite Tabelle einfügen
    $ws2 = $wb2.Worksheets.item(1)
    
    $usedRange = $ws2.usedrange
    $spalte = $usedrange.column + $usedrange.columns.count
    $range2=$ws2.cells(4, $spalte)
    $range2.PasteSpecial()
    
    
    #Zellen formatieren
    
    #$row--
    #$initialrow = $row
    #$dataRange = $ws2.Range(("A{0}" -f $initialrow),("CW{144}" - $row))
    #4..144 | ForEach {
    #$dataRange.Borders.Item($_).LineStyle = 1
    #$dataRange.Borders.Item($_).Weight = 2
    #$dataRange.Borders.Item($_).Color = 0
    #}
    
    $selection = $ws2.usedrange
    [void]$selection.select() 
    $_= $xlEdgeLeft,$xlEdgeTop,$xlEdgeBottom,$xlEdgeRight
    
    4..144 | ForEach {
    #$selection.Borders.item($xlEdgeLeft).LineStyle = 1  
    #$selection.Borders.item($xlEdgeLeft).Color = 0 
    #$selection.Borders.item($xlEdgeLeft).Weight = 2
    #$selection.Borders.item($xlEdgeTop).LineStyle = 1
    #$selection.Borders.item($xlEdgeBottom).LineStyle = 1
    #$selection.Borders.item($xlEdgeRight).LineStyle = 1
    
    $Selection.Borders.Item($_).Index = 7,8,9,10
    $Selection.Borders.Item($_).LineStyle = 1
    $Selection.Borders.item($_).Weight = 2
    $Selection.Borders.item($_).Color = 0
    }
    
     #$selection.Borderaround(1,2,0)
    
     #$selection.Borders.cells($xlEdgeLeft).LineStyle = $xlContinuous  
     #$selection.Borders.cells($xlEdgeLeft).Color = 0 
     #$selection.Borders.cells($xlEdgeLeft).Weight = $xlthin
     #$selection.Borders.cells($xlEdgeTop).LineStyle = $xlContinuous
     #$selection.Borders.cells($xlEdgeBottom).LineStyle = $xlContinuous
     #$selection.Borders.cells($xlEdgeRight).LineStyle = $xlContinuous
    
    #[void]$range2.BorderAround($xlContinuous,$xlThin,$xlColorIndexBlack)
    
    #$ws2.usedrange | %{ 
    
    
    #if ($_.Value() ){ 
    
     #hier Zelle formatieren 
    
     #  $_.BorderAround($xlContinuous,$xlThin,$xlColorIndexBlack)
     
      #} 
    #}
    
    #Write-Host $range2
    
    #$range2.PasteSpecial()
    
    # Tabelle speichern 
    $wb2.Save() 
    
    # Tabellen schliessen
    $wb1.close($false) 
    $wb2.close($true) 
    
    # Powershell operation beenden
    $xl.quit()
    spps -n excel

     

    Mittwoch, 21. Februar 2018 15:22

Alle Antworten

  • Hi Ufuk,
    Du kannst die Zellen, die nicht leer sind, mit dem nachfolgenden Codeschnipsel mit einem fetten roten Rahmen markieren:

    for ($i=0; $i -le 1; $i++)
    {
        for ($k=0; $k -le 2; $k++)
        {
            $range3=$ws2.cells($range2.row + $k, $range2.column + $i)
            if ($range3.Value2)
            {
                $range3.Borders(7).LineStyle = 1
                $range3.Borders(7).Color = 255
                $range3.Borders(7).TintAndShade = 0
                $range3.Borders(7).Weight = 3
    
                $range3.Borders(8).LineStyle = 1
                $range3.Borders(8).Color = 255
                $range3.Borders(8).TintAndShade = 0
                $range3.Borders(8).Weight = 3
    
                $range3.Borders(9).LineStyle = 1
                $range3.Borders(9).Color = 255
                $range3.Borders(9).TintAndShade = 0
                $range3.Borders(9).Weight = 3
    
                $range3.Borders(10).LineStyle = 1
                $range3.Borders(10).Color = 255
                $range3.Borders(10).TintAndShade = 0
                $range3.Borders(10).Weight = 3
            }
        }
    }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 21. Februar 2018 19:30
  • Hi,

    dank die nochmal für alles Peter.

    Gruß

    Ufuk

    Donnerstag, 22. Februar 2018 10:00