1

Outlook のメール データを Excel にエクスポートしました。

さて、私が遭遇した別の問題は、PR_LAST_VERB_EXECUTION_TIME が同じ日付形式として表示されないことです。

日付は、ddmmyyyy hh:mm:ss AM/PM または mmddyyyy hh:mm形式で指定できます ( img を参照してください)。
また、すべてのセル形式が一般的であることも確認しました。

日付形式を標準化することは可能ですか、またはこれを引き起こす他の理由がある可能性がありますか?
異なる日付形式で表示 (ddmmyyyy hh:mm:ss AM/PM または mmddyyyy hh:mm)


私のコードは次のとおりです。

For Each itm In Items
'Check item type
If TypeName(itm) = "MailItem" Then
intColumnCounter = 1
Set msg = itm
intRowCounter = intRowCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = GetLastVerb(msg)
End If
Next

Function GetLastVerb(olkMsg As Outlook.MailItem) As String

Dim intVerb As Integer
intVerb = GetProperty(olkMsg, "http://schemas.microsoft.com/mapi/proptag/0x10810003")
Select Case intVerb
    Case 102
        Debug.Print ("Reply to Sender")
        GetLastVerb = GetLastVerbTime(olkMsg)
    Case 103
        Debug.Print ("Reply to All")
        GetLastVerb = GetLastVerbTime(olkMsg)
    Case 104
     Debug.Print ("Forward")
        GetLastVerb = olkMsg.ReceivedTime
    Case 108
     Debug.Print ("Reply to Forward")
        GetLastVerb = GetLastVerbTime(olkMsg)
    Case Else
     Debug.Print ("Unknown")
        GetLastVerb = olkMsg.ReceivedTime
End Select
End Function


Public Function GetProperty(olkItm As Object, strPropName As String) As Date
Dim olkPA As Outlook.PropertyAccessor
Set olkPA = olkItm.PropertyAccessor
GetProperty = olkPA.GetProperty(strPropName)
Set olkPA = Nothing
End Function


Function GetLastVerbTime(olkItm As Object) As Variant
GetLastVerbTime = GetDateProperty(olkItm, "http://schemas.microsoft.com/mapi/proptag/0x10820040")
End Function


Public Function GetDateProperty(olkItm As Object, strPropName As String) As Date
Dim olkPA As Outlook.PropertyAccessor
Set olkPA = olkItm.PropertyAccessor
GetDateProperty = olkPA.UTCToLocalTime(olkPA.GetProperty(strPropName))
Set olkPA = Nothing
End Function
4

1 に答える 1

1

その背後にある理由は非常に単純です

この関数は、aまたは aGetLastVerbを返す他の関数を呼び出し、最後に文字列を返します。最良の方法は、範囲に書き込む前に出力を単純にフォーマットすることですDatevariantGetLastVerb

type最終出力が文字列であるか日付であるかに関心がない場合は、次のようrng.Value = GetLastVerb(msg)に置き換えます。rng.Value = Format(GetLastVerb(msg), "dd/mm/yyyy hh:mm:ss AM/PM")

適切な日付出力が必要な場合は、列を関連する日付/時刻形式としてフォーマットしformula、セルを更新するために使用します

例えば

Columns("A:A").NumberFormat = "dd/mm/yyyy hh:mm:ss AM/PM"

rng.FormulaR1C1 = Format(GetLastVerb(msg), "dd/mm/yyyy hh:mm:ss AM/PM")
于 2013-02-19T09:41:12.833 に答える