leer todo archivos .dbx del outlook
Publicado por sheila (15 intervenciones) el 06/06/2007 10:01:05
Estoy intentando visualizar en un grid todos los archivos.dbx del autlook, pero si tengo 500 en la carpeta recibidos, solo me visualiza 102.
Alguien sabria porque? este es el codigo que tengo hasta ahora.
Muchisimas gracias
Public Sub LeerMensajes(ByVal lngOffsetIh As Long)
Dim i As Long, j As Long, k As Long, Ih As TIndexHeader, ii As TIndexItem, hd As THeaderData
Dim flg As TFlag, lngTotalFlags As Long, lngOffset As Long, msg As mensaje, lngOffsetIi As Long
Dim p As Long
While lngOffsetIh
Ih = LeerIndexHeader(lngOffsetIh)
For i = 0 To SHR(Ih.Count, 8) - 1
lngOffsetIi = lngOffsetIh + LenB(Ih) + (i * 12) '12 = LenB(ii)
While lngOffsetIi
ii = LeerIndexItem(lngOffsetIi)
hd = LeerHeaderData(ii.HeaderPos)
lngTotalFlags = hd.FlagCount And &HFF
For j = 0 To lngTotalFlags - 1
flg = LeerFlag(ii.HeaderPos + 12 + (j * 4)) '12 = LenB(ii)
lngOffset = ii.HeaderPos + 12 + (lngTotalFlags * 4) + flg.Value '12 = LenB(ii)
Select Case flg.Id
Case &H1: msg.lngEstado = LeerLong(lngOffset)
Case &H2: msg.fchEnviado = LeerFecha(lngOffset)
Case &H7: msg.strIdMensaje = LeerCadena(lngOffset)
Case &H8: msg.strAsunto = LeerCadena(lngOffset)
Case &HA: msg.strReferencias = LeerCadena(lngOffset)
Case &HB: msg.strGruposDeNoticias = LeerCadena(lngOffset)
Case &HD: msg.strDe = LeerCadena(lngOffset)
Case &HE: msg.strEMail = LeerCadena(lngOffset)
Case &H12: msg.fchRecibido = LeerFecha(lngOffset)
Case &H13: msg.strReceptor = LeerCadena(lngOffset)
Case &H14: msg.strDireccionReceptor = LeerCadena(lngOffset)
Case &H1A: msg.strCuenta = LeerCadena(lngOffset)
Case &H1B: msg.strIdCuenta = LeerCadena(lngOffset)
'Case &H80: msg.Id = flg.Value
Case &H84: msg.strContenido = LeerContenido(flg.Value)
Case &H91: msg.lngTamaño = flg.Value
End Select
Next j
k = k + 1
ReDim Preserve arrMSG(1 To k)
arrMSG(k).lngEstado = msg.lngEstado
arrMSG(k).fchEnviado = msg.fchEnviado
arrMSG(k).strIdMensaje = msg.strIdMensaje
arrMSG(k).strAsunto = msg.strAsunto
arrMSG(k).strReferencias = msg.strReferencias
arrMSG(k).strGruposDeNoticias = msg.strGruposDeNoticias
arrMSG(k).strDe = msg.strDe
arrMSG(k).strEMail = msg.strEMail
arrMSG(k).fchRecibido = msg.fchRecibido
arrMSG(k).strReceptor = msg.strReceptor
arrMSG(k).strDireccionReceptor = msg.strDireccionReceptor
arrMSG(k).strCuenta = msg.strCuenta
arrMSG(k).strIdCuenta = msg.strIdCuenta
arrMSG(k).strContenido = msg.strContenido
arrMSG(k).lngTamaño = msg.lngTamaño
lngOffsetIi = ii.ChildIndex
'Debug.Print p
Wend
Next i
CalcularProximoOffsetIh Ih, lngOffsetIh
'Debug.Print m_colMensajes.Count
p = UBound(arrMSG)
Wend
Set arrLeidos = Nothing
p = UBound(arrMSG)
End Sub
Alguien sabria porque? este es el codigo que tengo hasta ahora.
Muchisimas gracias
Public Sub LeerMensajes(ByVal lngOffsetIh As Long)
Dim i As Long, j As Long, k As Long, Ih As TIndexHeader, ii As TIndexItem, hd As THeaderData
Dim flg As TFlag, lngTotalFlags As Long, lngOffset As Long, msg As mensaje, lngOffsetIi As Long
Dim p As Long
While lngOffsetIh
Ih = LeerIndexHeader(lngOffsetIh)
For i = 0 To SHR(Ih.Count, 8) - 1
lngOffsetIi = lngOffsetIh + LenB(Ih) + (i * 12) '12 = LenB(ii)
While lngOffsetIi
ii = LeerIndexItem(lngOffsetIi)
hd = LeerHeaderData(ii.HeaderPos)
lngTotalFlags = hd.FlagCount And &HFF
For j = 0 To lngTotalFlags - 1
flg = LeerFlag(ii.HeaderPos + 12 + (j * 4)) '12 = LenB(ii)
lngOffset = ii.HeaderPos + 12 + (lngTotalFlags * 4) + flg.Value '12 = LenB(ii)
Select Case flg.Id
Case &H1: msg.lngEstado = LeerLong(lngOffset)
Case &H2: msg.fchEnviado = LeerFecha(lngOffset)
Case &H7: msg.strIdMensaje = LeerCadena(lngOffset)
Case &H8: msg.strAsunto = LeerCadena(lngOffset)
Case &HA: msg.strReferencias = LeerCadena(lngOffset)
Case &HB: msg.strGruposDeNoticias = LeerCadena(lngOffset)
Case &HD: msg.strDe = LeerCadena(lngOffset)
Case &HE: msg.strEMail = LeerCadena(lngOffset)
Case &H12: msg.fchRecibido = LeerFecha(lngOffset)
Case &H13: msg.strReceptor = LeerCadena(lngOffset)
Case &H14: msg.strDireccionReceptor = LeerCadena(lngOffset)
Case &H1A: msg.strCuenta = LeerCadena(lngOffset)
Case &H1B: msg.strIdCuenta = LeerCadena(lngOffset)
'Case &H80: msg.Id = flg.Value
Case &H84: msg.strContenido = LeerContenido(flg.Value)
Case &H91: msg.lngTamaño = flg.Value
End Select
Next j
k = k + 1
ReDim Preserve arrMSG(1 To k)
arrMSG(k).lngEstado = msg.lngEstado
arrMSG(k).fchEnviado = msg.fchEnviado
arrMSG(k).strIdMensaje = msg.strIdMensaje
arrMSG(k).strAsunto = msg.strAsunto
arrMSG(k).strReferencias = msg.strReferencias
arrMSG(k).strGruposDeNoticias = msg.strGruposDeNoticias
arrMSG(k).strDe = msg.strDe
arrMSG(k).strEMail = msg.strEMail
arrMSG(k).fchRecibido = msg.fchRecibido
arrMSG(k).strReceptor = msg.strReceptor
arrMSG(k).strDireccionReceptor = msg.strDireccionReceptor
arrMSG(k).strCuenta = msg.strCuenta
arrMSG(k).strIdCuenta = msg.strIdCuenta
arrMSG(k).strContenido = msg.strContenido
arrMSG(k).lngTamaño = msg.lngTamaño
lngOffsetIi = ii.ChildIndex
'Debug.Print p
Wend
Next i
CalcularProximoOffsetIh Ih, lngOffsetIh
'Debug.Print m_colMensajes.Count
p = UBound(arrMSG)
Wend
Set arrLeidos = Nothing
p = UBound(arrMSG)
End Sub
Valora esta pregunta
0