[英]VBA macro called in Outlook not sorting in Excel
So basically I have an excel object called xlobj, and in my code before this snippit if I am referring to the xlobj I would say所以基本上我有一个名为 xlobj 的 excel 对象,如果我指的是 xlobj,我会在这个片段之前的代码中说
xlobj.Range(blahh blahh blahh).Value = "something"
Now my goal is to sort all my values that I took using the rest of my script from newest to oldest in Excel.现在我的目标是将我使用其余脚本在 Excel 中从最新到最旧的所有值进行排序。 I used the record macro function in excel to get the macro code, then pasted it in my Outlook VBA and attached the xlobj.
我用excel中的记录宏函数来获取宏代码,然后粘贴到我的Outlook VBA中并附上xlobj。 _ infront of all of the necessary codelines.
_在所有必要的代码行之前。
It doesn't work, it does everything but the physical sorting (selection happens and the code is compiling)它不起作用,除了物理排序之外它什么都做(选择发生并且代码正在编译)
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("A2:E900")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Does anyone see the problem with the code?有没有人看到代码的问题?
EDIT编辑
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
This script goes to the folder passed in through the parameter, and then dumps the inbox into an excel sheet这个脚本去到通过参数传入的文件夹,然后把收件箱转储到excel表中
With xlobj.Sort
.SetRange xlobj.Range("A1:E900") '<---
.Header = xlYes '<---
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
更改为 xlobj.Sort.SortFields.Add Key:=xlobj.Range("A2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.