A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Outlook and VBA
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

HTML Item properties vs. Regular item properties



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old December 20th 06, 08:11 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

Hello,

I have a macro that is supposed to check my HTTP MSN acount for any sent
emails that are not already in my OUtlook folder "Sent Items". I compare them
by checking the sent time and subject. However, the code seems to treat the
properties as 'not equal' even when it's the same email. Is there something
about being on a HTTP server that affects the item properties such that they
will evaluate as not equal?
Ads
  #2  
Old December 20th 06, 09:23 PM posted to microsoft.public.outlook.program_vba
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default HTML Item properties vs. Regular item properties

Please show your code. Are you sure the date/time properties are the same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any sent
emails that are not already in my OUtlook folder "Sent Items". I compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?



  #3  
Old December 20th 06, 09:31 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

Here is my code. Thank you for your help:


Sub CopyEmails()

'handles for manipulated objects
Dim app As Outlook.Application
Dim space As NameSpace
Dim box1 As MAPIFolder
Dim box2 As MAPIFolder
Dim folder1 As MAPIFolder
Dim folder2 As MAPIFolder
Dim itemcoll1 As Items
Dim itemcoll2 As Items
Dim item1 As Object
Dim item2 As Object
Dim itemCopy As Object

Dim x As Integer, y As Integer
Dim bookmark As Integer
Dim numItems As Integer
Dim totalCopied As Integer
Dim FCont As Boolean
Dim FSame As Boolean
Dim FCopy As Boolean

'define the handles
Set app = CreateObject("Outlook.Application")
Set space = app.GetNamespace("MAPI")
Set box1 = space.Folders("MSN")
Set folder1 = box1.Folders("Sent Items")
Set box2 = space.Folders("Rayo's Folders")
Set folder2 = box2.Folders("Sent Items")
Set itemcoll1 = folder1.Items
Set itemcoll2 = folder2.Items

'sort items collections by send date
itemcoll1.Sort "[SentOn]", True
itemcoll2.Sort "[SentOn]", True


'step through all items in collection 1
numItems = itemcoll1.Count
totalCopied = 0
y = 1
'bookmark marks the last y corresponding to the last time checked. It keeps
from checking later emails over and over again.
bookmark = 1

For x = 1 To numItems
'Set item1 to the new key, set y to the first index and turn on the continue
flag.
'Really, I should be able to start at the last index because the keys were
also sorted, _
but I'm not comfortable with that yet. The = code could advance the index
too far.
Set item1 = itemcoll1(x)
y = bookmark
FCont = True

'go through items in folder 2
Do While FCont
'For each iteration, the routine looks at the recevied time for item1
(the key) _
and item2 (the indexed item).
'The indexed item cycles through from last received to first. If the key
time is greater _
then the key must not be in the index - otherwise it would would been
equal to a prior index.
'If it is earlier than the index, we cycle back until we find an index
that it is greater _
or equal to.


'If there is no item corresponding to y, then we checked every index and
the email _
is not in the folder.
If y itemcoll2.Count Then
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1

End If



'item1.Copy.Move folder2
'totalCopied = totalCopied + 1
bookmark = y
Exit Do
End If
'Now we set the index to the new y
Set item2 = itemcoll2(y)

'If the sent time is greater than the item in folder 2, the email is new _
and will be moved
If item1.SentOn item2.SentOn Then
'Turn off the continue flag and copy the item
FCont = False
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1

End If


'item1.Copy.Move folder2
'totalCopied = totalCopied + 1
bookmark = y
End If


If item1.SentOn = item2.SentOn Then
'We have an item with the same time. The continue flag is off and
the copy flag is on. _
Copying the email is the default action.
FCont = False
FCopy = True
bookmark = y

Do While item1.SentOn = item2.SentOn


'Check if emails are the same by sent time and subject. Turn on
the "Same" flag
'The only time this would fail is if I sent two different emails
at the same time _
with the same subject. This is unlikely.
FSame = True

If Not (item1.Subject = item2.Subject) Then FSame = False


'If all of these were the same, the items are considered the
same, and the copy flag is turned off.
If FSame Then FCopy = False
'increment the index and reset item2. This continues for all
indices with the same time.
y = y + 1
'If the last emails in the folder have the same time, and we
reach the end, exit the loop and copy _
if the emails are different. This will probably never happen in
real life, but it does while testing.
If y itemcoll2.Count Then
Exit Do
End If
Set item2 = itemcoll2(y)
Loop

'If the copy flag was turned off, one the indices matched the key.
It won't be copied. If we _
went through them all and found no matches, we copy the email.
Either way, we're done with this key.
If FCopy Then
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check
that the folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1

End If

'item1.Copy.Move folder2
'totalCopied = totalCopied + 1
End If
'The continue flag is off either way, so the loop will terminate

End If

'if the key is not greater than the index, and not the same, increment
the index by one.
y = y + 1
Loop

Next x


Fin:
MsgBox totalCopied & " e-mails copied.", vbOKOnly, "Copying e-mails
completed."

End Sub




"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any sent
emails that are not already in my OUtlook folder "Sent Items". I compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?




  #4  
Old December 20th 06, 09:45 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

I have found something. The problem seems to be with emails that are replies
or Fwds. In one case the SentOn and Subject properties return those of the
reply or forward, and in the other they return the properties of the original
email.

Now, how do I specify that the property should be from the reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any sent
emails that are not already in my OUtlook folder "Sent Items". I compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?




  #5  
Old December 20th 06, 10:14 PM posted to microsoft.public.outlook.program_vba
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default HTML Item properties vs. Regular item properties

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those of the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the
same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?






  #6  
Old December 20th 06, 10:28 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

What I did was to compare the items with this code:

The result gave me the SentOn time and Subject for the reply email when it
read from the http server, but the SentOn and Subject for the original email
from the default Outlook folder. It also read the Senton time in seconds, so
I suspect it would equate them if it was reading the right time.



Sub CompareItem(item1 As Object, item2 As Object)

'handles for manipulated objects
'Dim app As Outlook.Application
'Dim space As NameSpace
'Dim box1 As MAPIFolder
'Dim box2 As MAPIFolder
'Dim folder1 As MAPIFolder
'Dim folder2 As MAPIFolder
'Dim itemcoll1 As Items
'Dim itemcoll2 As Items
'Dim item1 As Object
'Dim item2 As Object
'Dim itemCopy As Object
Dim outputstr As String



'define the handles
'Set app = CreateObject("Outlook.Application")
'Set space = app.GetNamespace("MAPI")
'Set box1 = space.Folders("Mailbox - Kumana, Rayomand")
'Set folder1 = box1.Folders("Test")
''Set box2 = space.Folders("Test2")
'Set folder2 = box2.Folders("Mail2")
'Set itemcoll1 = folder1.Items
'Set itemcoll2 = folder2.Items

'Set item1 = itemcoll1(1)
'Set item2 = itemcoll1(2)

outputstr = outputstr & item1.SentOn & vbTab & item2.SentOn & vbTab & vbTab

If item1.SentOn = item2.SentOn Then
outputstr = outputstr & "Yes"
Else
outputstr = outputstr & "No"
End If

outputstr = outputstr & vbCrLf & item1.Subject & vbTab & item2.Subject &
vbTab & vbTab

If item1.Subject = item2.Subject Then
outputstr = outputstr & "Yes"
Else
outputstr = outputstr & "No"
End If


MsgBox outputstr, vbOKOnly, "Test Info"


End Sub


"Dmitry Streblechenko" wrote:

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those of the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the
same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?






  #7  
Old December 20th 06, 10:40 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

I tried the code you suggested and it now copies several emails which it
wasn't copying before, and they all show the same time.

"Dmitry Streblechenko" wrote:

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those of the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the
same?
Due to the roundoff errors, you should never expect an exact match, but
rather check that the difference between two values is less than some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such that
they
will evaluate as not equal?






  #8  
Old December 21st 06, 01:02 AM posted to microsoft.public.outlook.program_vba
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default HTML Item properties vs. Regular item properties

Outlook shows time rounded to the next minute, e.g. "12/20/2006 3:37:56:135"
will be displayed as "12/20/2006 3:38" by Outlook, the same as "12/20/2006
3:37:56:142" while the values are clearly diferent under the hood.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I tried the code you suggested and it now copies several emails which it
wasn't copying before, and they all show the same time.

"Dmitry Streblechenko" wrote:

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those of
the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the
reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the
same?
Due to the roundoff errors, you should never expect an exact match,
but
rather check that the difference between two values is less than some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to
treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such
that
they
will evaluate as not equal?








  #9  
Old December 21st 06, 10:09 PM posted to microsoft.public.outlook.program_vba
Rayo K
external usenet poster
 
Posts: 16
Default HTML Item properties vs. Regular item properties

Ah ha! I see what I did wrong. I forgot to change the section of code that
sorted the emails when the first sent time was greater than the second. Here
is my modified code, which is working for now. However, I must keep
calibrating the time threshhold for the difference betwen recorded Sent
times. Thank you!

However, I still don't understand why the sent times would be different in
the first place. Why would Outlook record different times for the HTTP folder
and the default folder?

Sub CopyEmails()
'Written by Rayo Kumana 11/20/06
'handles for manipulated objects
Dim app As Outlook.Application
Dim space As NameSpace
Dim box1 As MAPIFolder
Dim box2 As MAPIFolder
Dim folder1 As MAPIFolder
Dim folder2 As MAPIFolder
Dim itemcoll1 As Items
Dim itemcoll2 As Items
Dim item1 As Object
Dim item2 As Object
Dim itemCopy As Object

Dim x As Integer, y As Integer
Dim bookmark As Integer
Dim numItems As Integer
Dim totalCopied As Integer
Dim FCont As Boolean

Dim TimeThresh As Date

'TimeThreshhold is an approximate gate for the difference in time _
between the HTTP folder's SentOn and the Default folder's SentOn.
'It should be set more than the max error between SentOn values _
but less than the minimum expected time between sending two emails.
TimeThresh = 1 / 24 / 60 / 6
'It is currently set to 10 seconds


'define the handles
Set app = CreateObject("Outlook.Application")
Set space = app.GetNamespace("MAPI")
Set box1 = space.Folders("MSN")
Set folder1 = box1.Folders("Sent Items")
Set box2 = space.Folders("Test1")
Set folder2 = box2.Folders("Sent Items")
Set itemcoll1 = folder1.Items
Set itemcoll2 = folder2.Items

'sort items collections by send date
itemcoll1.Sort "[SentOn]", True
itemcoll2.Sort "[SentOn]", True


'step through all items in collection 1
numItems = itemcoll1.Count
totalCopied = 0
y = 1
'bookmark marks the last y corresponding to the last time checked. It keeps
from checking later emails over and over again.
bookmark = 1

For x = 1 To numItems
'Set item1 to the new key, set y to the first index and turn on the continue
flag.
'Really, I should be able to start at the last index because the keys were
also sorted, _
but I'm not comfortable with that yet. The = code could advance the index
too far.
Set item1 = itemcoll1(x)
y = bookmark
FCont = True

'go through items in folder 2
Do While FCont
'For each iteration, the routine looks at the recevied time for item1
(the key) _
and item2 (the indexed item).
'The indexed item cycles through from last received to first. If the key
time is greater _
then the key must not be in the index - otherwise it would would been
equal to a prior index.
'If it is earlier than the index, we cycle back until we find an index
that it is greater _
or equal to.


'If there is no item corresponding to y, then we checked every index and
the email _
is not in the folder.
If y itemcoll2.Count Then
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
CompareItem item1, item2
totalCopied = totalCopied + 1

End If

bookmark = y
Exit Do
End If
'Now we set the index to the new y
Set item2 = itemcoll2(y)

'If the sent time is greater than the item in folder 2, the email is new _
and will be moved
If item1.SentOn (item2.SentOn + TimeThresh) Then
'Turn off the continue flag and copy the item
FCont = False
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1
End If
bookmark = y
End If


If Abs(item1.SentOn - item2.SentOn) TimeThresh Then
'We have an item within the time threshold of the key. The continue
flag is off and the copy flag is on. _
'Either it is the same email or we will copy it.
'Either way, we will not continue with this key
FCont = False

bookmark = y

If Not (item1.Subject = item2.Subject) Then
'If the subjects are different, copy the email
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check
that the folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1

End If

End If
'The continue flag is off either way, so the loop will terminate

End If

'if the key is not greater than the index, and not the same, increment
the index by one.
y = y + 1
Loop

Next x


Fin:
MsgBox totalCopied & " e-mails copied.", vbOKOnly, "Copying e-mails
completed."

End Sub




"Dmitry Streblechenko" wrote:

Outlook shows time rounded to the next minute, e.g. "12/20/2006 3:37:56:135"
will be displayed as "12/20/2006 3:38" by Outlook, the same as "12/20/2006
3:37:56:142" while the values are clearly diferent under the hood.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I tried the code you suggested and it now copies several emails which it
wasn't copying before, and they all show the same time.

"Dmitry Streblechenko" wrote:

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those of
the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the
reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are the
same?
Due to the roundoff errors, you should never expect an exact match,
but
rather check that the difference between two values is less than some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to
treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties such
that
they
will evaluate as not equal?









  #10  
Old December 21st 06, 10:48 PM posted to microsoft.public.outlook.program_vba
Dmitry Streblechenko
external usenet poster
 
Posts: 2,116
Default HTML Item properties vs. Regular item properties

Why would they be the same? How do you end up with two copies of the same
message to begin with?

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Ah ha! I see what I did wrong. I forgot to change the section of code
that
sorted the emails when the first sent time was greater than the second.
Here
is my modified code, which is working for now. However, I must keep
calibrating the time threshhold for the difference betwen recorded Sent
times. Thank you!

However, I still don't understand why the sent times would be different in
the first place. Why would Outlook record different times for the HTTP
folder
and the default folder?

Sub CopyEmails()
'Written by Rayo Kumana 11/20/06
'handles for manipulated objects
Dim app As Outlook.Application
Dim space As NameSpace
Dim box1 As MAPIFolder
Dim box2 As MAPIFolder
Dim folder1 As MAPIFolder
Dim folder2 As MAPIFolder
Dim itemcoll1 As Items
Dim itemcoll2 As Items
Dim item1 As Object
Dim item2 As Object
Dim itemCopy As Object

Dim x As Integer, y As Integer
Dim bookmark As Integer
Dim numItems As Integer
Dim totalCopied As Integer
Dim FCont As Boolean

Dim TimeThresh As Date

'TimeThreshhold is an approximate gate for the difference in time _
between the HTTP folder's SentOn and the Default folder's SentOn.
'It should be set more than the max error between SentOn values _
but less than the minimum expected time between sending two emails.
TimeThresh = 1 / 24 / 60 / 6
'It is currently set to 10 seconds


'define the handles
Set app = CreateObject("Outlook.Application")
Set space = app.GetNamespace("MAPI")
Set box1 = space.Folders("MSN")
Set folder1 = box1.Folders("Sent Items")
Set box2 = space.Folders("Test1")
Set folder2 = box2.Folders("Sent Items")
Set itemcoll1 = folder1.Items
Set itemcoll2 = folder2.Items

'sort items collections by send date
itemcoll1.Sort "[SentOn]", True
itemcoll2.Sort "[SentOn]", True


'step through all items in collection 1
numItems = itemcoll1.Count
totalCopied = 0
y = 1
'bookmark marks the last y corresponding to the last time checked. It
keeps
from checking later emails over and over again.
bookmark = 1

For x = 1 To numItems
'Set item1 to the new key, set y to the first index and turn on the
continue
flag.
'Really, I should be able to start at the last index because the keys were
also sorted, _
but I'm not comfortable with that yet. The = code could advance the index
too far.
Set item1 = itemcoll1(x)
y = bookmark
FCont = True

'go through items in folder 2
Do While FCont
'For each iteration, the routine looks at the recevied time for item1
(the key) _
and item2 (the indexed item).
'The indexed item cycles through from last received to first. If the
key
time is greater _
then the key must not be in the index - otherwise it would would been
equal to a prior index.
'If it is earlier than the index, we cycle back until we find an index
that it is greater _
or equal to.


'If there is no item corresponding to y, then we checked every index
and
the email _
is not in the folder.
If y itemcoll2.Count Then
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
CompareItem item1, item2
totalCopied = totalCopied + 1

End If

bookmark = y
Exit Do
End If
'Now we set the index to the new y
Set item2 = itemcoll2(y)

'If the sent time is greater than the item in folder 2, the email is
new _
and will be moved
If item1.SentOn (item2.SentOn + TimeThresh) Then
'Turn off the continue flag and copy the item
FCont = False
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check that the
folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1
End If
bookmark = y
End If


If Abs(item1.SentOn - item2.SentOn) TimeThresh Then
'We have an item within the time threshold of the key. The continue
flag is off and the copy flag is on. _
'Either it is the same email or we will copy it.
'Either way, we will not continue with this key
FCont = False

bookmark = y

If Not (item1.Subject = item2.Subject) Then
'If the subjects are different, copy the email
'If the server is not connected, it will not copy the email
On Error Resume Next
Set itemCopy = item1.Copy
If Err.Number Then
itemCopy.Delete
MsgBox "An error occurred while copying an item. Check
that the folder is online.", vbOKOnly, "Terminate"
GoTo Fin
Else
itemCopy.Move folder2
totalCopied = totalCopied + 1

End If

End If
'The continue flag is off either way, so the loop will terminate

End If

'if the key is not greater than the index, and not the same, increment
the index by one.
y = y + 1
Loop

Next x


Fin:
MsgBox totalCopied & " e-mails copied.", vbOKOnly, "Copying e-mails
completed."

End Sub




"Dmitry Streblechenko" wrote:

Outlook shows time rounded to the next minute, e.g. "12/20/2006
3:37:56:135"
will be displayed as "12/20/2006 3:38" by Outlook, the same as
"12/20/2006
3:37:56:142" while the values are clearly diferent under the hood.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I tried the code you suggested and it now copies several emails which it
wasn't copying before, and they all show the same time.

"Dmitry Streblechenko" wrote:

I doubt it is possible.
Have you tried to modify the line

If item1.SentOn = item2.SentOn Then

to something like

If Abs(item1.SentOn, item2.SentOn) 1/24/60/60 Then

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
I have found something. The problem seems to be with emails that are
replies
or Fwds. In one case the SentOn and Subject properties return those
of
the
reply or forward, and in the other they return the properties of the
original
email.

Now, how do I specify that the property should be from the
reply/forward?

"Dmitry Streblechenko" wrote:

Please show your code. Are you sure the date/time properties are
the
same?
Due to the roundoff errors, you should never expect an exact match,
but
rather check that the difference between two values is less than
some
value
(e.g. millisecond).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

"Rayo K" wrote in message
...
Hello,

I have a macro that is supposed to check my HTTP MSN acount for
any
sent
emails that are not already in my OUtlook folder "Sent Items". I
compare
them
by checking the sent time and subject. However, the code seems to
treat
the
properties as 'not equal' even when it's the same email. Is there
something
about being on a HTTP server that affects the item properties
such
that
they
will evaluate as not equal?











 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Item.Save and Item.Close Script causes Outlook 2007 to Crash Rayyan Outlook - Using Forms 6 November 25th 06 04:14 AM
How to change an item from a recurring Appointment item to an exception from VB code? Dikbill Outlook and VBA 2 July 13th 06 09:45 AM
Saving exception item in recurring appointment item fails Dikbill Outlook and VBA 2 July 11th 06 04:59 PM
Saving exception item in recurring appointment item fails Dikbill Outlook - Calandaring 0 July 11th 06 03:01 PM
Sender Properties [email protected] Outlook and VBA 4 July 6th 06 04:34 PM


All times are GMT +1. The time now is 06:34 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.