crank69
Goto Top

Powershell excel

Hallo Leute,

ich habe in meinem Script leider 3 Probleme und hoffe das ihr mir helfen könnt.

würde ich in meinen Augen das schwerste Problem anfange.

Ich will gerne wie unten in dem 2ten Bild zusehen die Dateien die am aktuellsten im Ordner sind gerne oben haben und das er dann auch nur die ersten 4 Dateien nimmt. Laut einer anderen Person soll es bei ihm funktionieren mit dem Script aber bei mir leider nicht und hoffe ihr habt ne Idee an was es liegen könnte.

Excel CSV-Dateien in separate Sheets importieren
  1. Quelldateien
$quelle = 'D:\Excel\*.csv'

  1. Zieldatei
$ziel = "D:\Excel\.xlsx"

  1. Excel Objekt
$objExcel = New-Object -Com Excel.Application

  1. platzhalter für leere Parameter
$n = [System.Reflection.Missing]::Value

  1. Neue Mappe öffnen
$wb = $objExcel.Workbooks.Add()

  1. Excel anzeigen
$objExcel.Visible = $true

  1. Meldungen abschalten
$objExcel.DisplayAlerts = $false

  1. Ale CSV-Dateien des Ordners in ein neues Sheet importieren
#initiale Anzahl an sheets speichern
$initcount = [int]$wb.Worksheets.Count
gci $quelle -File | sort CreationTime -Descending | select -First 4 | %{
$ws = $wb.Worksheets.Add($n,$wb.Worksheets.Item($wb.Worksheets.Count),$n,$n)
$qt = $ws.QueryTables.Add("TEXT;$($_.Fullname)",$ws.Range("A1"))
$qt.Name = "Import"
$qt.FieldNames = $true
$qt.AdjustColumnWidth = $true
$qt.TextFilePlatform = 1252
$qt.TextFileStartRow = 1
$qt.TextFileParseType = 1
$qt.TextFileSemicolonDelimiter = $true
$qt.Refresh($false)
$qt.Delete()
}


Mein anderes Problem ist das ich gerne 2 Spalten sortieren möchte, zuerst Spalte N2 und dann C2, sodass er wenn die erste Spalte sortiert ist danach die 2te Spalte nimmt ohne das die erste Spalte verändert wird

$ws.Range("A2:N5100").Sort($ws.Range("N2"), $xlAscending) >$null
$ws.Range("A2:N5100").Sort($ws.Range("C2"), $xlAscending) >$null


Mein letztes Problem ist würde gerne, die Bereiche farblich machen mit 100 klappt es aber leider nicht 0 bis 49 in rot und 50 bis 99 in gelb. Ich habe es auch mit klammern probiert, aber nix klappt.

$condition = $ws.Range("N:N").FormatConditions.Add(1, 3, "100")
$condition.Interior.Color = 65280 # Grün
$condition = $ws.Range("N:N").FormatConditions.Add(1, 3, "0:49")
$condition.Interior.Color = 255 # Rot
$condition = $ws.Range("N:N").FormatConditions.Add(1, 3, "50:99")
$condition.Interior.Color = 65535 #Gelb


Danke schon mal für die Zeit und hoffe ihr könnt mir helfen und versteht meine Probleme und es soll leider alles in Powershell sein.
auslesen
auslesen2

Content-ID: 315320

Url: https://administrator.de/contentid/315320

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

129813
129813 15.09.2016 um 09:35:48 Uhr
Goto Top
gci $quelle -File
-File parameter only works PS 3.0 and above.
mit dem Script aber bei mir leider nicht
Error message?
Mein anderes Problem ist das ich gerne 2 Spalten sortieren möchte, zuerst Spalte N2 und dann C2, sodass er wenn die erste Spalte sortiert ist danach die 2te Spalte nimmt ohne das die erste Spalte verändert wird
Mein letztes Problem ist würde gerne, die Bereiche farblich machen mit 100 klappt es aber leider nicht 0 bis 49 in rot und 50 bis 99 in gelb. Ich habe es auch mit klammern probiert, aber nix klappt.
Open Excel, start macro recording press ALT+F11 and you will see the code you only have to modify a bit to work in powershell face-wink
Crank69
Crank69 15.09.2016 um 10:01:57 Uhr
Goto Top
Ich weiß das man Makro machen kann aber mein Chef will es in Powershell haben.


Leider habe ich nur PS 1.0 kann man da was machen oder einstellen das es Funktioniert.
129813
129813 15.09.2016 aktualisiert um 10:06:03 Uhr
Goto Top
Zitat von @Crank69:

Ich weiß das man Makro machen kann aber mein Chef will es in Powershell haben.
NOOO, i said this will help you how to transfer it to powershell code !!!! You don't want to learn anything ??
Leider habe ich nur PS 1.0 kann man da was machen oder einstellen das es Funktioniert.
you dont have PS 1.0 you have 2.0!
No Problem, use
gci $quelle | ?{!$_.PSIsContainer} | sort CreationTime -Descending | select -First 4
this is the same working under PS 2.0

mein Chef will es in Powershell haben.
And why should we do your work ?? Oh lord ...
Crank69
Crank69 15.09.2016 um 10:13:19 Uhr
Goto Top
danke schön für die Hilf es klappt und werde mich mal mit dem Makro beschäftigen
colinardo
colinardo 15.09.2016 um 11:39:27 Uhr
Goto Top
Sortieren:
$ws.Sort.SortFields.Clear()
$ws.Sort.SortFields.Add($ws.Range("A2:A5100"),0,1,$n,0)  
$ws.Sort.SortFields.Add($ws.Range("C2:C5100"),0,1,$n,0)  
$ws.Sort.SetRange($ws.Range("A1:N5100"))  
$ws.Sort.Header = 1
$ws.Sort.Apply()

FormatCondition:
$condition = $ws.Range("N:N").FormatConditions.Add(1,3,100)  
$condition.Interior.Color = 65280
$condition = $ws.Range("N:N").FormatConditions.Add(1,7,50)  
$condition.Interior.Color = 65535
$condition = $ws.Range("N:N").FormatConditions.Add(1,6,50)  
$condition.Interior.Color = 255
Crank69
Crank69 15.09.2016 um 13:16:34 Uhr
Goto Top
danke für die Zeit und Lösungen geht alles super.