0

したがって、基本的には xlobj という Excel オブジェクトがあり、このスニピットの前のコードで xlobj を参照している場合は、

xlobj.Range(blahh blahh blahh).Value = "something"

ここでの目標は、スクリプトの残りの部分を使用して取得したすべての値を、Excel で最新のものから古いものへと並べ替えることです。Excel のレコード マクロ関数を使用してマクロ コードを取得し、それを Outlook VBA に貼り付けて xlobj を添付しました。_ 必要なすべてのコードラインの前。

機能しません。物理的な並べ替え以外のすべてを実行します (選択が行われ、コードがコンパイルされます)。

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

コードに問題がある人はいますか?

編集

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

このスクリプトは、パラメーターを介して渡されたフォルダーに移動し、受信トレイを Excel シートにダンプします。

4

2 に答える 2

0
With xlobj.Sort
    .SetRange xlobj.Range("A1:E900") '<---
    .Header = xlYes                  '<---
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
于 2012-08-23T18:48:41.470 に答える