Так в основном у меня есть объект первенствовать под названием xlobj, и в моем коде перед этим Snippit, если я имею в виду xlobj я бы сказалVBA макрос вызывается в Outlook, не сортировка в Excel
xlobj.Range(blahh blahh blahh).Value = "something"
Теперь моя цель для сортировки всех моих значений, которые я использовал, используя остальную часть моего скрипта от самого нового до самого старого в Excel. Я использовал функцию макроса записи в excel, чтобы получить код макроса, а затем вставлял его в свой Outlook VBA и прикреплял xlobj. _ infront всех необходимых кодовых линий.
Это не работает, он делает все, кроме физической сортировки (выбор происходит и код компиляции)
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
ли кто-нибудь увидеть проблему с кодом?
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
Этот скрипт идет в папку передается через параметр, а затем сбрасывает входящие в первенствовать лист
Могу я спросить, какой код у вас был * до * этого блока? Мне интересно, был ли 'xlobj' установлен в правильный экземпляр Excel/правильный рабочий лист внутри. Я мог ошибаться (почему я хочу видеть больше кода), но похоже, что у вас должно быть что-то большее, как 'xlobj.Sheets (1) .Range (blahh blahh blahh)' – Gaffi