nach Spalte sortieren - mit WSH

29/07/2008 - 15:18 von andreas | Report spam
Hallo zusammen,

ich würde gerne folgenden Code in WSH verwenden:

Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A1:C20").Sort Key1:=Range("B2"), Order1:=xlDescending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal



so sieht es bisher aus:


Set objxl = CreateObject("Excel.Application")


With objxl
.Workbooks.Add(1)
.activesheet.Name = "Verzeichnis-Uebersicht-LW-V"
.visible = True
Titel = "Uebersicht wird erstellt. Bitte warten..."
.caption = Titel
.cells(5,3).value = "Bitte warten..."
objxl.ActiveWindow.DisplayGridlines = False
'lege Zeiger auf verschiedene Objekte... das dauert eine Weile...

Set fs = CreateObject("Scripting.FileSystemObject")


Const xlNone = -4142
Const xlCenter = -4108
Const xlDownward = -4170
Const xlNormal = -4143
Const xlAutomatic = -4105
Const xlThin = 2
Const xlLeft = -4131
Const xlRight = -4152
Const xlTop = -4160
Const xlBottom = -4107
Const xlToLeft = -4159
Const xlHorizontal = -4128
Const xlToRight = -4161
Const xlSolid = 1
Const xlDiagonalDown = 5
Const xlDiagonalUp = 6
Const xlEdgeLeft = 7
Const xlEdgeTop = 8
Const xlEdgeBottom = 9
Const xlEdgeRight = 10
Const xlInsideVertical = 11
Const xlInsideHorizontal = 12
Const xlContinuous = 1
Const xlPrintNoComments=-4142
Const xlLandscape = 2
Const xlDownThenOver = 1
Const msoFalse = 0
Const msoScaleFromTopLeft = 0
Const xlCategory = 1
Const xlPrimary = 1
Const xlValue = 2
Const xlCylinderColClustered = 92
Const xlCylinderCol = 98
Const xlDescending = 2
Const xlGuess = 0
Const xlTopToBottom = 1
Const xlSortNormal = 0
'auslesen von User-spezifischen Variablen

intzeile = .activesheet.usedrange.rows.count + 1
.range("A" &intzeile).activate
intzeile = intzeile + 1

Set Drives = fs.Drives
intzeile = intzeile + 1
For Each laufwerk In Drives
If laufwerk.Driveletter = "V" Then
'erstelle Hilfstabelle für Diagram
.activesheet.name="uebersicht"



'Sub ListFolder(path)
'SYS: Microsoft (r) Script Runtime
.range("A1").value="Ordner"
.range("B1").value="Ordnergröße"
intzeile2 = 2

Set folder = fs.GetFolder("V:\")

For Each subfolder In folder.SubFolders
.range("A" & intzeile2).value=subfolder.Name
.range("B" & intzeile2).value= GetMB(subfolder.Size)
.range("B" & intzeile2).value= .range("B" & intzeile2).value * 1
.range("B" & intzeile2).NumberFormat = "0.00 "" MB"""
intzeile2 = intzeile2 + 1
Next
For Each file In folder.Files
fi1 = fi1 + file.size
Next

.range("a" & intzeile2).value="Dateien in V:\"
.range("B" & intzeile2).value=GetMB(fi1)
.range("B" & intzeile2).value= .range("B" & intzeile2).value * 1
.range("B" & intzeile2).NumberFormat = "0.00 "" MB"""

rowscountx = .activesheet.usedrange.rows.count

On Error Goto 0


.Range("A1:B" & rowscountx ).Select


Next
End With



'####################Hier der nicht funktionierende Code-
Teil##################

Set objxlsort= objxl.Range("A1:B" & rowscountx).sort()
With objxlsort

.Key1=objxl.Range("B2")
.Order1=xlDescending
.Header=xlGuess
.OrderCustom=1
.MatchCase=False
.Orientation=xlTopToBottom
.DataOption1=xlSortNormal
End With

'###################################################################

With objxl








If rowscountx > 15 Then
Ctype• 'horizontale Zylinder
cdt=False
Else
Ctype˜ 'vertikale Zylinder
cdt=True
End If


Set objXLchart = objXL.Charts.Add()
.activeSheet.Name = "Uebersichts-Chart"
.ActiveChart.ChartType = Ctype
.ActiveChart.HasTitle = True
.ActiveChart.ChartTitle.Characters.Text = "Speicherplatz pro
Ordner"
.ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True
.ActiveChart.Axes(xlCategory,
xlPrimary).AxisTitle.Characters.Text = "Vergleich"
.ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
.ActiveChart.Axes(xlValue,
xlPrimary).AxisTitle.Characters.Text = "Speicher in MB"
.ActiveChart.Axes(xlValue).MinimumScaleIsAuto = True
.activeChart.HasDataTable = cdt

'.activeChart.DataTable.ShowLegendKey = True
.ActiveChart.ChartArea.Select
.Selection.AutoScaleFont = True
.Selection.Font.Name = "Arial"
.Selection.Font.Size = 8

.Visible = True
.Application.CommandBars("Chart").Visible = False

'Diagramm-Formatierung und Beschriftung abgeschlossen...


'Else

'End If
Titel2 = "Uebersicht wurde erstellt."
.caption = Titel2

.cells(5,3).value = ""

End With


'Object-variablen werden wieder freigegeben.
Set objxl = Nothing
Set fs = Nothing

'funktionen###########################
Function GetKB(bytes)
GetKB = FormatNumber(bytes/1024,2) & " KB"
End Function

Function GetMB(bytes)
GetMB = FormatNumber(bytes/1024^2,1)
End Function



kann mir evtl. jemand weiter helfen?

vielen Dank schon einmal im vorraus

Andreas
 

Lesen sie die antworten

#1 stefan onken
29/07/2008 - 16:02 | Warnen spam
On 29 Jul., 15:18, andreas wrote:
Hallo zusammen,

ich würde gerne folgenden Code in WSH verwenden:

Range("B2").Select
   Range(Selection, Selection.End(xlDown)).Select
   Range("A1:C20").Sort Key1:=Range("B2"), Order1:=xlDescending,
Header:= _
       xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom, _
       DataOption1:=xlSortNormal

so sieht es bisher aus:


'####################Hier der nicht funktionierende Code-
Teil##################

Set objxlsort= objxl.Range("A1:B" & rowscountx).sort()
With objxlsort

.Key1=objxl.Range("B2")
.Order1=xlDescending
.Header=xlGuess
.OrderCustom=1
.MatchCase=False
.Orientation=xlTopToBottom
.DataOption1=xlSortNormal
End With

'###################################################################



hallo Andreas,
zum einen fehlen die : vor den =, und WSH kennt vermutlich die Werte
der XL-spezifischen Variablen (zB xlDescending) nicht.
Deren Wert erhàltst du im VBA-Editor über das Direktfenster (?
xlDescending).
Teste mal diesen Code:

objxl.Range("A1:B" & rowscountx).Sort _
Key1:=objxl.Range("B2"), _
Order1:=2, _
Header:=0, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=1, _
DataOption1:=0

Gruß
stefan

Ähnliche fragen