2012-08-23 3 views
0

Так в основном у меня есть объект первенствовать под названием 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 

Этот скрипт идет в папку передается через параметр, а затем сбрасывает входящие в первенствовать лист

+0

Могу я спросить, какой код у вас был * до * этого блока? Мне интересно, был ли 'xlobj' установлен в правильный экземпляр Excel/правильный рабочий лист внутри. Я мог ошибаться (почему я хочу видеть больше кода), но похоже, что у вас должно быть что-то большее, как 'xlobj.Sheets (1) .Range (blahh blahh blahh)' – Gaffi

ответ

0
With xlobj.Sort 
    .SetRange xlobj.Range("A1:E900") '<--- 
    .Header = xlYes     '<--- 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

ничего не изменило. .SetRange должен быть A2, поскольку строка A1 является заголовком. Я не хочу сортировать заголовки, я хочу сортировать данные (даты), которые находятся в столбцах ниже каждого заголовка. – bneigher

+0

Настройка .Header в xlYes указывает Excel, что у вас есть строка заголовка, поэтому она * не будет сортировать ее , –

+0

Но Тим, его исходный код начинается с 'A2' * и * имеет' xlNo'. – Gaffi

0

Изменение к xlobj.Sort.SortFields. Добавить ключ: = xlobj.Range («A2»), SortOn: = xlSortOnValues, Order: = xlDescending, DataOption: = xlSortNormal

Смежные вопросы