Saltar al contenido

Respaldar o Copiar los Correos de Outlook a una Carpeta en el Disco Duro

Normalmente en las empresas cuando un usuario deja de laborar se debe respaldar su mailbox y así poder eliminar su usuario en el servidor, este es uno de los usos por el cual se puede requerir respaldar correo en outlook, también por precaución si en la empresa no se tiene una infraestructura de respaldo el cual incluya los mailbox de los usuarios nosotros mismos podemos realizar un respaldo de toda nuestra información, incluyendo los archivos  de outlook PST

Aqui te mostramos sencillos pasos para para poder realizar un Outlook Backup de manera sencilla.

Respaldar correo en Outlook 2013 / 2016

Los pasos para respaldar correos Outlook en su versión 2013 son casi los son los siguientes:

1.- Vamos a Archivo (File)Respaldar Correo en Outlook 2013

2.- En el menú seleccionamos Abrir & Exportar (Open & Export) > Importar/Exportar (Import/Export).Respaldar Correo Outlook 2013 - 2

3.- En el asistente de Importación y Exportación seleccionamos Exportar a Archivo (Export to a File) y damos Siguiente (Next).Respaldar Correo en Outlook 2013 - 3

4.- En el tipo de archivo seleccionamos Archivo de Datos Outlook pst (Outlook Data File).Respaldar Correo en Outlook 2013 - 4

5.- Seleccionamos los archivos de los cuales queremos una copia de seguridad en este caso el Mailbox completo y nos aseguramos de palomear la opción Incluir subcarpetas (Include subfolders) y damos Siguiente (Next).Respaldar Correo en Outlook 2013 - 5

6.- Seleccionamos donde guardar el respaldo y clic en Finalizar.Respaldar Correo en Outlook 2013 - 6

7.- Ahora ya tenemos nuestro Outlook PST con nuestro Mailbox respaldado listo para cuando lo ocupemos.

Estos son los sencillos pasos que nos van a permitir realizar respaldar correos Outlook también conocido como Outlook Backup

Si tu versión no es la 2013 y quieres crear pst outlook 2010 no tienes que preocuparte, ya que solo tienes que seguir los mismos pasos.

Respaldar correo en Outlook 2007

Si no sabes como respaldar correos Outlook 2007 sólo tienes que seguir estos sencillos pasos:

1.- Vamos a Archivo (File), el menú seleccionamos Abrir & Exportar (Open & Export) > Importar/Exportar (Import/Export).Respaldar correo E

2.- En el asistente de Importación y Exportación seleccionamos Exportar a Archivo (Export to a File) y damos Siguiente (Next).Respaldar correo - 2 E

3.- En el tipo de archivo seleccionamos Archivo Folder Personal (pst) (Personal Folder File).Respaldar correo - 3 E

4.- Seleccionamos lo que deseamos respaldar en este caso el Mailbox completo y nos aseguramos de palomear la opción Incluir subcarpetas (Include subfolders) y damos Siguiente (Next).Respaldar correo - 4 E

5.- Seleccionamos donde guardar el respaldo y clic en Finalizar.como respaldar outlook 5

6.- Ahora ya tenemos nuestro Outlook PST con nuestro Mailbox respaldado listo para cuando lo ocupemos.

Restablecer respaldo de Outlook pst

Ya hemos visto como hacer una copia de seguridad Outlook ahora ¿que pasa si necesito abrir el archivo pst para ver información que tengo en mi copia de seguridad?

Cuando requerimos Restablecer Respaldo de Outlook por cualquier razón tenemos 2 opciones, la primera es importar todo de nuevo a el mismo Mailbox y la segunda es agregar el Mailbox como una carpeta personal más para poder acceder a la información.

Importar Respaldo de Outlook al Mailbox

El ejemplo se muestra con Outlook 2013 el cual es similar en la versión 2010, en Outlook 2007 solo cambia un poco el orden del menú Archivo (Pasos 1 y 2)

1.- Clic en Archivo (File).Importar Respaldo de Outlook al Mailbox - 1

2.- Vamos a Abrir y Exportar (Open & Export) > Importar/Exportar (Import/Export)Importar Respaldo de Outlook al Mailbox - 2

3.- Seleccionamos Importar de Otro Programa o Archivo (Import from another program or file) y damos Siguiente (Next)Importar Respaldo de Outlook al Mailbox - 3

Leer:
VBScript - Descomprimir zip adjunto y guardar los archivos automáticamente Outlook

4.- Seleccionamos la fuente que seria el pst Archivo de Datos Outlook Pst (Outlook Data File).Importar Respaldo de Outlook al Mailbox - 4

5.- Damos clic en Examinar para ir al directorio donde tenemos guardado nuestro archivo de respaldo y en las Opciones, se recomienda que marque No importar elementos duplicados (Do not import duplicates) a menos que quiera que la información importada reemplace o duplique los elementos que ya existen en Outlook y damos siguiente (Next).Importar Respaldo de Outlook al Mailbox - 5

6.- Ahora debemos seleccionar que es lo que vamos a importar, si es todo y si deseamos incluir los subfolders, también debemos seleccionar en donde deseamos que se importen si al Mailbox o a otra carpeta.Importar Respaldo de Outlook al Mailbox - 6

7.- Damos Finalizar y esperamos a que se importe el proceso puede tardar algunos minutos dependiendo de la cantidad de información, de esta manera terminado la tarea de respaldar correos Outlook .

Restablecer Respaldo de Outlook como Carpeta Personal

En caso ya tengas tu respaldo Outlook PST y lo necesites copiar a otro equipo o restaurarlo por cualquier razón en el actual, estos son los pasos:

Esta opción es igual en Windows Vista, 7, 8, 8.1, 10

1.- Entramos a Panel de Control (Control Panel), en el campo de búsqueda escribimos Correo (Mail) y seleccionamos la que nos muestra de resultado.Restablecer respaldo de Outlook (pst) - 1

2.- Nos abrirá la ventana de configuración de correo damos clic en el botón Archivos de Datos (Data Files).Restablecer respaldo de Outlook (pst) - 2

3.- Abrirá la ventana de Configuraciones de la Cuenta (Account Settings) y damos clic en el botón Añadir (Add)Restablecer respaldo de Outlook (pst) - 3

4.- Nos abrirá la ventana para seleccionar la carpeta el cual vamos al directorio donde tenemos guardado el respaldo y damos Aceptar (OK)Restablecer respaldo de Outlook (pst) - 4

5.- Cerramos todo lo anterior y vamos a Outlook donde ya podemos ver el Mailbox como una carpeta personal.Restablecer respaldo de Outlook (pst) - 5

Con esto ya hemos logrado guardar correos de Outlook en una carpeta.

.VBScript Respaldar o realizar copia de seguridad Outlook a una Carpeta en el Disco Duro

Algunas veces es mejor organizar los correos (.msg) en carpetas en el disco duro y no en un .PST todo dependiendo de el uso y el volumen de Emails que se manejen, puede ser mejor guardar los archivos .msg en el disco duro si se maneja una gran cantidad de correspondencia electrónica al día y más cuando un Folder Personal PST esta por llegar a su limite maximo que son 20 Gb, en la empresa hemos identificado muchos PST dañados a partir de los 19 Gb, en estos casos se ha estado optando por ayudar a los usuarios a respaldar la informacion Outlook de ese PST a una Carpeta en el Disco Duro.

Hace unos días nos hicieron una consulta sobre como hacerlo automáticamente con un VBScript conservar la estructura de los folders del PST o Mailbox dando un formato al nombre del correo (.msg) guardado, Diane Poremsky ha creado un VBScript el cual les mostramos a continuación, haciendo una pequeña modificación a este para que este guarde los mensajes conforme a la petición del usuario.

Como funciona el VBScript

Ver Articulo Como utilizar el Editor VBA en Outlook

Recomendación: Al momento de hacer una copia de seguridad Outlook se recomienda guardar en una ruta corta Ej: C:\Outlook\ ya que el nombre máximo permitido por Windows son 256 Caracteres incluyendo la dirección de las carpetas.

1.- Una vez pegado el código en el Modulo, Presionamos F5 o vamos a Run (Ejecutar) > Run Sub/UserForm Ejecutar VBScript Copiar los correos de Outlook

2.- Nos mostrará los Scripts que tengamos para ejecutar en este ejemplo solo aparece el Script para Respaldar los Correos a una Carpeta, seleccionamos y damos clic en Run.Ejecutar VBScript Copiar los correos de Outlook-2

3.- Ahora nos mostrará la siguiente ventana donde seleccionamos lo que vamos a Copiar o Respaldar al Disco Duro, puede ser un Mailbox o un PST.Ejecutar VBScript Copiar los correos de Outlook-3

4.- Ahora en la siguiente ventada nos mostrará la carpeta Mis Documentos para seleccionar donde guardar información de nuestro Outlook PST.Ejecutar VBScript Copiar los correos de Outlook-4

Leer:
VBScript - Outlook reenviar correo y agregar texto automaticamente

5.- Esperamos a que finalice el proceso de copia de seguridad, dependiendo de la cantidad de correos es el tiempo que tardara ejecutándose el Script, en aproximado con un PST con aprox. 300 correos tardo 5 minutos en mi equipo.

Ejemplo Respaldo de Correos

6.- En la imagen anterior vemos un ejemplo del formato que se guardan que es Fecha (YYYYMMDD-hhmm) – From – Subject.

Ver Articulo Como utilizar el Editor VBA en Outlook

Actualizaciones de Código

18/Febrero/2016 – Solución de errores al momento de guardar correos con subject extenso.

15/Marzo/2016 – Solución de errores al crear folder multinivel.

Option Explicit
       Dim StrSavePath     As String
 
Sub SaveAllEmails_ProcessAllSubFolders()
       
    Dim i               As Long
    Dim j               As Long
    Dim n               As Long
    Dim strSubject      As String
    Dim StrName         As String
    Dim strFrom         As String
    Dim StrFile         As String
    Dim StrReceived     As String
    Dim StrSentOn       As String
    Dim StrFolder       As String
    Dim StrSaveFolder   As String
    Dim StrFolderPath   As String
    Dim iNameSpace      As NameSpace
    Dim myOlApp         As Outlook.Application
    Dim SubFolder       As MAPIFolder
    Dim mItem           As MailItem
    Dim FSO             As Object
    Dim ChosenFolder    As Object
    Dim objShell    As Object
    Dim Folders         As New Collection
    Dim EntryID         As New Collection
    Dim StoreID         As New Collection
    Dim itm             As Object
       
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set myOlApp = Outlook.Application
    Set iNameSpace = myOlApp.GetNamespace("MAPI")
    Set ChosenFolder = iNameSpace.PickFolder
    Set objShell = CreateObject("Wscript.Shell")
    If ChosenFolder Is Nothing Then
GoTo ExitSub:
    End If
       
BrowseForFolder StrSavePath
          
    Call GetFolder(Folders, EntryID, StoreID, ChosenFolder)
       
    For i = 1 To Folders.Count
        StrFolder = StripIllegalChar(Folders(i))
        n = InStr(3, StrFolder, "\") + 1
        StrFolder = Mid(StrFolder, n, 256)
        StrFolderPath = StrSavePath & "\" & StrFolder & "\"
        StrSaveFolder = Left(StrFolderPath, Len(StrFolderPath) - 1) & "\"
        If Not FSO.FolderExists(StrFolderPath) Then
            BuildFullPath StrFolderPath
        End If
           
        Set SubFolder = myOlApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
        On Error Resume Next
        For j = 1 To SubFolder.Items.Count
            Set mItem = SubFolder.Items(j)
            StrReceived = Format(mItem.ReceivedTime, "YYYYMMDD-hhmm")
            strSubject = mItem.Subject
' Eliminar el apostrofe de la siguiente linea si se desea agregar el From a los nombres de los correos NOTA: Solo funciona para los correos recibidos.
            'strFrom = mItem.senderName
            StrName = StripIllegalChar(strSubject)
' Eliminar el apostrofe de la siguiente linea si se desea agregar el From a los nombres de los correos NOTA: Solo funciona para los correos recibidos.
            ' StrFile = StrSaveFolder & StrReceived & " - " & strFrom & " - " & StrName & ".msg"
' Agregar un apostrofe al principio o eliminar la siguiente linea cuando utilice From en los archivos.
            StrFile = StrSaveFolder & StrReceived & " - " & StrName
            StrFile = Left(StrFile, 253)
            mItem.SaveAs StrFile & ".msg", 3
        Next j
        On Error GoTo 0
    Next i
    
       
ExitSub:
       
End Sub

Sub BuildFullPath(ByVal StrFolderPath)
Dim FSO             As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FolderExists(StrFolderPath) Then
BuildFullPath FSO.GetParentFolderName(StrFolderPath)
FSO.CreateFolder StrFolderPath
End If
End Sub

Function StripIllegalChar(StrInput)
    Dim RegX            As Object
       
    Set RegX = CreateObject("vbscript.regexp")
       
    RegX.Pattern = "[\" & Chr(34) & Chr(26) & "\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}`\'\;\:\<\>\?\/\,]"
    RegX.IgnoreCase = True
    RegX.Global = True
       
    StripIllegalChar = RegX.Replace(StrInput, "")
       
ExitFunction:
    Set RegX = Nothing
       
End Function
   
 
Sub GetFolder(Folders As Collection, EntryID As Collection, StoreID As Collection, Fld As MAPIFolder)
    Dim SubFolder       As MAPIFolder
       
    Folders.Add Fld.FolderPath
    EntryID.Add Fld.EntryID
    StoreID.Add Fld.StoreID
    For Each SubFolder In Fld.Folders
        GetFolder Folders, EntryID, StoreID, SubFolder
    Next SubFolder
       
ExitSub:
    Set SubFolder = Nothing
       
End Sub
   
   
Function BrowseForFolder(StrSavePath As String, Optional OpenAt As String) As String
    Dim objShell As Object
    Dim objFolder
 
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Please choose a folder", 0)
StrSavePath = objFolder.self.Path
 
    On Error Resume Next
    On Error GoTo 0
       
ExitFunction:
    Set objShell = Nothing
       
End Function

VBScript para Copiar los correos de un contacto especifico (from) conservando la estructura de los folders

Para hacer uso de este se debe especificar en la linea 86 el correo o parte del correo de la persona a guardar sus correos, así como también se puede buscar por nombre de domino ejemplo: @portalmastips.com

Linea 86:

If InStr(LCase(strFromEmail), "fernando") Then 'Cambiar fernando por el correo o parte del correo

Una vez realizado el cambio este guardara todos los correos del contacto o dominio especifico.

Option Explicit
       Dim StrSavePath     As String
 
Sub SaveAllEmails_ProcessAllSubFolders()
       
    Dim i               As Long
    Dim j               As Long
    Dim n               As Long
    Dim strSubject      As String
    Dim StrName         As String
    Dim strFrom         As String
    Dim strFromEmail    As String
    Dim StrFile         As String
    Dim StrReceived     As String
    Dim StrSentOn       As String
    Dim StrFolder       As String
    Dim StrSaveFolder   As String
    Dim StrFolderPath   As String
    Dim iNameSpace      As NameSpace
    Dim myOlApp         As Outlook.Application
    Dim SubFolder       As MAPIFolder
    Dim mItem           As MailItem
    Dim FSO             As Object
    Dim ChosenFolder    As Object
    Dim objShell    As Object
    Dim Folders         As New Collection
    Dim EntryID         As New Collection
    Dim StoreID         As New Collection
    Dim itm             As Object
       
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set myOlApp = Outlook.Application
    Set iNameSpace = myOlApp.GetNamespace("MAPI")
    Set ChosenFolder = iNameSpace.PickFolder
    Set objShell = CreateObject("Wscript.Shell")
    If ChosenFolder Is Nothing Then
GoTo ExitSub:
    End If
       
BrowseForFolder StrSavePath
          
    Call GetFolder(Folders, EntryID, StoreID, ChosenFolder)
       
    For i = 1 To Folders.Count
        StrFolder = StripIllegalChar(Folders(i))
        n = InStr(3, StrFolder, "\") + 1
        StrFolder = Mid(StrFolder, n, 256)
        StrFolderPath = StrSavePath & "\" & StrFolder & "\"
        StrSaveFolder = Left(StrFolderPath, Len(StrFolderPath) - 1) & "\"
        If Not FSO.FolderExists(StrFolderPath) Then
            BuildFullPath StrFolderPath
        End If
           
        Set SubFolder = myOlApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
        On Error Resume Next
        For j = 1 To SubFolder.Items.Count
            
            Set mItem = SubFolder.Items(j)
            strFrom = mItem.SenderName
            strFromEmail = mItem.SenderEmailAddress
        ' Obtener las direcciones Exchange - Se puede remover si no se utiliza Exchange
        Dim olEU As Outlook.ExchangeUser
        Dim oEDL As Outlook.ExchangeDistributionList
        Dim recip As Outlook.Recipient
        Set recip = Application.Session.CreateRecipient(strFrom)

        If InStr(1, strFromEmail, "/") > 0 Then
         Select Case recip.AddressEntry.AddressEntryUserType
            Case OlAddressEntryUserType.olExchangeUserAddressEntry
            Set olEU = recip.AddressEntry.GetExchangeUser
				If Not (olEU Is Nothing) Then
					strFromEmail = olEU.PrimarySmtpAddress
				End If
             Case OlAddressEntryUserType.olOutlookContactAddressEntry
             Set olEU = recip.AddressEntry.GetExchangeUser
				If Not (olEU Is Nothing) Then
					strFromEmail = olEU.PrimarySmtpAddress
				End If
             Case OlAddressEntryUserType.olExchangeDistributionListAddressEntry
             Set oEDL = recip.AddressEntry.GetExchangeDistributionList
				If Not (oEDL Is Nothing) Then
					strFromEmail = olEU.PrimarySmtpAddress
				End If
		 End Select
        End If
            If InStr(LCase(strFromEmail), "fernando") Then 'se puede buscar parte del correo ejemplo para [email protected] se puede capturar solo fernando
            StrReceived = Format(mItem.ReceivedTime, "YYYYMMDD-hhmm")
            strSubject = mItem.Subject
			' Eliminar el apostrofe de la siguiente linea si se desea agregar el From a los nombres de los correos NOTA: Solo funciona para los correos recibidos.
            'strFrom = mItem.senderName
            StrName = StripIllegalChar(strSubject)
			' Eliminar el apostrofe de la siguiente linea si se desea agregar el From a los nombres de los correos NOTA: Solo funciona para los correos recibidos.
            ' StrFile = StrSaveFolder & StrReceived & " - " & strFrom & " - " & StrName & ".msg"
			' Agregar un apostrofe al principio o eliminar la siguiente linea cuando utilice From en los archivos.
            StrFile = StrSaveFolder & StrReceived & " - " & StrName
            StrFile = Left(StrFile, 253)
            mItem.SaveAs StrFile & ".msg", 3
            End If
        Next j
        On Error GoTo 0
    Next i
    
       
ExitSub:
       
End Sub

Sub BuildFullPath(ByVal StrFolderPath)
Dim FSO             As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FolderExists(StrFolderPath) Then
	BuildFullPath FSO.GetParentFolderName(StrFolderPath)
	FSO.CreateFolder StrFolderPath
End If
End Sub

Function StripIllegalChar(StrInput)
    Dim RegX            As Object
       
    Set RegX = CreateObject("vbscript.regexp")
       
    RegX.Pattern = "[\" & Chr(34) & Chr(26) & "\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}`\'\;\:\<\>\?\/\,]"
    RegX.IgnoreCase = True
    RegX.Global = True
       
    StripIllegalChar = RegX.Replace(StrInput, "")
       
ExitFunction:
    Set RegX = Nothing
       
End Function
   
 
Sub GetFolder(Folders As Collection, EntryID As Collection, StoreID As Collection, Fld As MAPIFolder)
    Dim SubFolder       As MAPIFolder
       
    Folders.Add Fld.FolderPath
    EntryID.Add Fld.EntryID
    StoreID.Add Fld.StoreID
    For Each SubFolder In Fld.Folders
        GetFolder Folders, EntryID, StoreID, SubFolder
    Next SubFolder
       
ExitSub:
    Set SubFolder = Nothing
       
End Sub
   
   
Function BrowseForFolder(StrSavePath As String, Optional OpenAt As String) As String
    Dim objShell As Object
    Dim objFolder
 
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Please choose a folder", 0)
StrSavePath = objFolder.self.Path
 
    On Error Resume Next
    On Error GoTo 0
       
ExitFunction:
    Set objShell = Nothing
       
End Function

Si llegaste a esta pagina buscando respuestas para preguntas como: ¿como guardar correos de outlook en mi pc? o ¿como hacer un respaldo de Outlook? espero que hayamos podido resolver tus dudas  y si no, no dudes en dejar un comentario y con gusto te responderemos. 

 

Leer:
VBScript  - Guardar los archivos adjuntos catalogado por remitente y Eliminar adjunto del Correo
Leer entrada anterior
Como utilizar el Editor VBA en Office (Utilizar Macros VBScript)

Hemos encontrado los Scripts de Visual Basic bastante útiles para automatizar una gran cantidad de tareas (Mas en Excel y...

Cerrar