Outlook中调用的VBA宏未在Excel中排序

Outlook中调用的VBA宏未在Excel中排序,excel,vba,outlook,tablesorter,Excel,Vba,Outlook,Tablesorter,基本上我有一个叫做xlobj的excel对象,在我的代码中,如果我指的是xlobj,我会说 xlobj.Range(blahh blahh blahh).Value = "something" 现在,我的目标是使用脚本的其余部分对Excel中的所有值进行排序,从最新值到最旧值。我使用excel中的record宏函数获取宏代码,然后将其粘贴到Outlook VBA中,并在所有必要的代码行前面附加xlobj 它不工作,除了物理排序(选择发生,代码正在编译)之外,它什么都做 有人看到代码有问题吗 编

基本上我有一个叫做xlobj的excel对象,在我的代码中,如果我指的是xlobj,我会说

xlobj.Range(blahh blahh blahh).Value = "something"
现在,我的目标是使用脚本的其余部分对Excel中的所有值进行排序,从最新值到最旧值。我使用excel中的record宏函数获取宏代码,然后将其粘贴到Outlook VBA中,并在所有必要的代码行前面附加xlobj

它不工作,除了物理排序(选择发生,代码正在编译)之外,它什么都做

有人看到代码有问题吗

编辑

此脚本通过参数进入传入的文件夹,然后使用xlobj.Sort将收件箱转储到excel工作表中
With xlobj.Sort
    .SetRange xlobj.Range("A1:E900") '<---
    .Header = xlYes                  '<---
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

.SetRange xlobj.Range(“A1:E900”)”更改为xlobj.Sort.SortFields.Add Key:=xlobj.Range(“A2”)、SortOn:=xlSortOnValues、Order:=xlDescending、DataOption:=xlSortNormal

这没有更改任何内容。.SetRange应该是A2,因为A1的行是标题。我不想对标题进行排序,我想对每个标题设置下面的列中的数据(日期)进行排序。Header to xlYes告诉Excel您有一个标题行,所以它不会对其进行排序。我可以问一下,在这个块之前您有什么代码吗?我想知道是否将
xlobj
设置为Excel的正确实例/中的正确工作表。我可能错了(为什么我想看到更多的代码),但看起来您应该有一些类似于
xlobj.Sheets(1).Range(blahh blahh blahh)
Private Sub Extract(ByVal oFolder As Outlook.Folder)

On Error Resume Next
Set myOlApp = Outlook.Application
Set mynamespace = myOlApp.GetNamespace("mapi")
Set MyFolder = oFolder

Set xlobj = CreateObject("excel.application.14")
Set xlobjWbk = xlobj.Workbooks.Open("c:\Users\(username)\Desktop\(filename).xlsx")
xlobj.Visible = True
xlobj.Application.DisplayAlerts = False

'Set Heading
xlobj.Range("a" & 1).Value = "Recieved Time"
xlobj.Range("b" & 1).Value = "Sender Email"
xlobj.Range("c" & 1).Value = "Subject"
xlobj.Range("d" & 1).Value = "Sender Name"
xlobj.Range("e" & 1).Value = "Body"
 xlobj.Columns("A").ColumnWidth = 17
 xlobj.Columns("B").ColumnWidth = 32
 xlobj.Columns("C").ColumnWidth = 36
 xlobj.Columns("D").ColumnWidth = 19
 xlobj.Columns("E").ColumnWidth = 56

For i = MyFolder.Items.Count To MyFolder.Items.Count + 100
 xlobj.Range("a" & i + 1).Value = ""
 xlobj.Range("b" & i + 1).Value = ""
 xlobj.Range("C" & i + 1).Value = ""
 xlobj.Range("d" & i + 1).Value = ""
 xlobj.Range("e" & i + 1).Value = ""
Next

For i = 1 To MyFolder.Items.Count
 Set myItem = MyFolder.Items(i)
 msgtext = myItem.body

 xlobj.Range("a" & i + 1).Value = myItem.ReceivedTime
 xlobj.Range("b" & i + 1).Value = myItem.SenderEmailAddress
 xlobj.Range("C" & i + 1).Value = myItem.Subject
 xlobj.Range("d" & i + 1).Value = myItem.SenderName
 xlobj.Range("e" & i + 1).Value = msgtext
 xlobj.Columns("A:E").VerticalAlignment = xlVAlignTop
Next

xlobj.Range("A2:E900").Select
xlobj.Sort.SortFields.Clear
xlobj.Sort.SortFields.Add Key:=xlobj.Range("A1"), SortOn:=xlSortOnValues,     Order:=xlDescending, DataOption:=xlSortNormal
With xlobj.Sort
    .SetRange xlobj.Range("A1:E900")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
With xlobj.Sort
    .SetRange xlobj.Range("A1:E900") '<---
    .Header = xlYes                  '<---
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With