PDA

Vollständige Version anzeigen : mit OL-Makro Exceltabelle sortieren


TwickelPurpel
18.08.2017, 11:52
Moin zusammen,

ich habe eine ExcelTab, deren Inhalt täglich aktualisiert wird (automatisierter Report). Für wiederum eine automatisierte Prüfung der Daten möchte ich die Daten sortieren.

Mit meinem Makro kann ich auf die Tabelle zugreifen. Mit dem Makrorecorder habe ich die Sortierung in Excel aufgezeichnet. Nun bekomme ich dieses Logik aber nicht in mein OL-Makro fehlerfrei zum laufen.

Habe die Fehlermeldung im Code eingetragen.

Könnte mir bitte jemand behilflich sein, dafür vorab bereits vielen Dank.




Option Explicit


Sub Daten_sortieren()

On Error Resume Next

Dim file$
Dim objExcel As Object
Dim objWorkbook As Object
Dim objWorksheet As Object
Dim objRange As Object


file = "G:Report.xlsx"

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Open(file)
Set objWorksheet = objWorkbook.Worksheets(1)

Set objRange = objWorksheet.usedRange
objRange.EntireColumn.AutoFit 'Optimale Spaltenbreite einstellen

objRange.Select
objRange.Sort.SortFields.Clear
objRange.Sort.SortFields.Add Key:=Range("B2:B2896"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
'Range --> Fehler beim Kompilieren
' Sub oder Function nicht definiert


With objWorkbook.Worksheets("Report_Upload_VWO").Sort
.SetRange Range("A1:E2896")
'Range --> Fehler beim Kompilieren
' Sub oder Function nicht definiert
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
'xlTopToBottom --> Fehler beim Kompilieren
' Variable nicht definiert
.SortMethod = xlPinYin
'xlPinYin --> Fehler beim Kompilieren
' Variable nicht definiert
.Apply
End With
End Sub

markusxy
23.08.2017, 13:39
Excel Fragen besser im Excel Forum stellen.

EarlFred
23.08.2017, 16:57
Hallo,

Outlook kennt keine Excel-Variablen.
xl = Excel: xlTopToBottom
Öffne Excel, dann den VB-Editor und trage ins Direktfenster folgendes ein:
?xlTopToBottomEnter
Als Ergebnis erhältst Du den Wert 1. Den trägst du im Outlook-Code stattdessen ein.

Outlook kann auch mit einer Excel-Range nichts anfangen.
Immer vollständig referenzieren:
Application.Workbook.Worksheet.Range(...)
bzw. da die Informationen vererbt wurden:
objWorksheet.Range(...)

Also so, wie Du (oder wer auch immer den Code geschrieben hat) es an anderer Stelle bereits getan hat.

Grüße
EarlFred

TwickelPurpel
28.08.2017, 14:25
Moin EarlFred,

danke für die Rückmeldung, werde ich testen und Rückmeldung geben.

Grüße