Um amigo meu compartilhou no Facebook um vídeo (cujo link não existe mais) onde o Dr. Lair Ribeiro começa explicando o que é pH, depois começa a defender (como se fossem coisas comprovadas) que um pH alcalino é garantia de uma vida saudável e longa, e que o que faz as pessoas envelhecerem é o pH ácido. Ele vai explicando que refrigerantes fazem mal pois são ácidos, que alimentação ácida faz o seu sangue ficar ácido, que água é o único remédio para equilibrar o pH do corpo, e depois começa a falar que nem toda água é igual, que há águas que fazem bem e águas que fazem mal, por fim sugerindo que as pessoas devem tomar uma tal de “ÁGUA HEXAGONAL” que teoricamente teria não só o pH ideal mas também teria propriedades anti-oxidantes.

A primeira coisa curiosa é analisar a técnica de oratória.

  • O apresentador explica meia dúzia de conceitos que todo mundo conhece (como a definição pH) pra ir ganhando confiança do público, que passa a se envolver no desenvolvimento da teoria, pois no começo do discurso todos conceitos são bem leigos, então todos conseguem acompanhar.
  • Depois ele lança meia duzia de frases sensacionalistas pra causar impacto, apela para o emocional falando sobre a saúde dos “filhos que tomam veneno”, dos “pais que não gostam dos filhos”, etc.
  • Mais pra frente ele usa alguns termos em inglês (que quem entende inglês consegue imaginar do que se trata) para o público achar que ele realmente é expert no assunto e que entende mais do que o público.
  • Ele começa a dar entonações no discurso pra deixar as pessoas mais e mais envolvidas, como naquela parte em que ele fica explicando que o pH é uma escala logarítmica.
  • Ele lança algumas hipóteses como se fossem verdades (como a questão do câncer)
  • Por fim ele começa a tirar conclusões sem pé nem cabeça (ou seja, uma falácia), como a história de que o alimento altera o pH do corpo.

Como sou cético, fui pesquisar pra entender melhor, pesquisei a opinião de diversos médicos, biólogos e estudantes discutindo as teorias apresentadas no vídeo, e logo comecei a encontrar diversos links desmentindo a teoria. Algumas coisas que encontrei na minha pesquisa:

  • Existem muitas hipóteses relacionando a saúde com o pH do corpo, mas nada nunca foi provado (por isso que são hipóteses, e não Teorias ou Leis que são bem mais consistentes, pois exigem provas ou um escopo mais abrangente ). Ou seja, a hipótese é essencialmente um “palpite”, enquanto uma teoria é uma explicação mais abrangente que junta várias linhas de evidência, alegações e modelos.

  • Quem pesquisar um pouco vai achar gente dizendo que todas doenças (até o câncer) se devem ao pH. (Em alguns destes sites você encontrará também muito misticismo, viagens pra quinta dimensão, gnomos, teoria da conspiração, sites que vendem produtos místicos, etc etc)

  • Quem pesquisar um pouco também vai encontrar muita gente dizendo que o pH não muda por causa da alimentação (apenas por outros desequilibrios), e que qualquer desequilibrio alimentar (ex: excesso de acidez) é compensado pelos rins e eliminado na urina. (Pra mim me pareceram ser sites bem mais sérios, e que não vendiam nenhum tipo de misticismo).

  • Se for ver o discurso dos fabricantes de “água alcalina”, eles dizem que todos os males do mundo vem do pH ácido. Ex: http://www.ciacristal.com/blog/conteudo.php?ctdo=2

  • Se for ver o discurso do fabricante de refrigerante, vai ver eles desmentindo tudo. Ex: http://www.coca-colacompany.com/contact-us/coca-cola-rumors-facts Ex: http://www.rebic.com.br/boatos-e-mitos/a-acidez-dos-refrigerantes-causa-problemas-em-ossos-e-dentes/

  • Ou seja, tem que procurar fontes IMPARCIAIS. Segundo a Wikipedia: “A crítica comum da Coca-cola de que sua acidez tem níveis alegadamente tóxicos foi provada por pesquisadores como algo sem fundamentos, e por isso vários processos foram fechados nos tribunais americanos”.

A verdade é que tem muita gente desmentindo essa teoria da Dieta Ácida/Alcalina:

Na minha opinião, a medicina tem muitas hipóteses (ou seja, não provadas), poucas certezas, e ainda vai amadurecer muito. Ainda na minha opinião, o Lair Ribeiro tem um histórico questionável de produtos de auto ajuda, e teorias polêmicas e questionáveis, pra dizer o mínimo.

Como a maioria de nós não é biólogo nem médico, é muito fácil ouvir meia duzia de argumentos que parecem bem embasados e acreditar. E é aí que entra minha crítica sobre a oratória e sobre as falácias.

Pra exemplificar como ele é usa argumentos tendenciosos, vou falar sobre a “escala logaritmica”:

  • O pH=5 realmente tem 10x mais cátions H+ do que o pH=6.
  • Mas o pH=8 também tem 10x mais ânions OH- do que o pH=7.
  • Ou seja, a ordem de magnitude cresce logaritmicamente para os dois lados.
  • Então se o pH ideal é 7 (por exemplo), estar em 6 é “10x mais ácido do que deveria”, mas estar em 8 também é “10x mais alcalino do que deveria”.
  • No entanto o orador só reforça “o rápido crescimento” para ácido, como se para o alcalino a escala também não crescesse de forma logarítmica.

Por fim, resolvi pesquisar na Wikipedia sobre a tal Teoria da Dieta Ácida ou Alcalina, que propõe que devemos evitar alimentos e bebidas ácidos.

Segundo a Wikipedia, “faltam evidências significantes para comprovar a teoria”. Segundo outro artigo da Wikipedia, “as alegações não tem evidência médica e usam premissas contrárias ao atual entendimento da fisiologia humana”. O mesmo artigo também diz que a hipótese que correlacionava dieta ácida com osteoporose ultimamente está sendo descartada.

É óbvio que aqueles que querem vender placebo tentam desmerecer a Wikipedia, chamando ela de “cética”, etc. Então eu resolvi pesquisar sobre a tal “Água Hexagonal” que segundo um leitor me alertou no Brasil é vendida com o nome de Acqualive, e promovida pelo médico em questão.

Segundo a Wikipedia: Hexagonal water is a term used in a marketing scam[1][2] that claims the ability to create a certain configuration of water that is better for the body.[3] The term “hexagonal water” refers to a cluster of water forming a hexagonal shape that supposedly enhances nutrient absorption, removes metabolic wastes, and enhances cellular communication, among other things.[4] Similar to the dihydrogen monoxide hoax, the scam takes advantage of the consumer’s limited knowledge of chemistry, physics, and physiology.”

Ou seja, ela foi descrita como um “golpe de marketing que alega a possibilidade de criar uma disposição da água que seria melhor para o corpo”

A última frase mostra exatamente o que eu falei sobre como é fácil enganar os leigos: “O golpe se utiliza do conhecimento limitado que o consumidor tem sobre química, física e fisiologia”. Basta alguém mal-intencionado que domine a técnica da oratória, que ele consegue demonstrar uma conclusão errada (uma falácia) para os leigos acreditarem e comprarem placebo.

Mais sobre a pseudociência da água hexagonal aqui.

Recapitulando, os americanos inventaram um golpe, que provavelmente deve ser muito rentável, os brasileiros copiaram a idéia e contrataram um dos maiores oradores do país para ser o garoto propaganda da nova água que resolve todos os problemas de saúde, rejuvenesce, previne o câncer e a osteoporose.

O que me chateia mais não são os mal-intencionados que usam marketing e oratória para enganar o consumidor, mas sim as pessoas que não tem discernimento para entender os golpes e pesquisar a verdade. Me assusta ver como somos tão facilmente manipulados com pseudociência, falácias (conclusões feitas de maneira ilógica ou sem fundamento), e outras técnicas de persuasão.

O maior problema da falta de discernimento não é que somos manipulados há décadas como consumidores, mas sim que somos manipulados há séculos por governantes, imprensa, e líderes religiosos.

Veja bem, eu não estou dizendo que refrigerante é bom - eles são ruins, e eu próprio os evito. Mas eles são ruins pela quantidade de açúcar e pelos adoçantes questionáveis, e não pelo pH (como o vídeo alega), pois se o problema fosse o pH o suco de limão e de abacaxi também seriam veneno. O que estou dizendo é que não dá pra acreditar em pseudociência e transformar isso em histeria coletiva, como o pessoal faz no facebook. A pseudociência é igual ao Notícias Populares: só sobrevive através de gente que não questiona a informação que lê.

Já falei demais. Vou tomar uma água hexagonal pra recompor minhas energias…

EDIT: 06/Jan/2016: Diversas pessoas estão comentando aqui sobre “água ionizada”. É exatamente a mesma coisa que “água alcalina”, só mudaram o nome pra ver se enganam mais gente. Segundo o Inquirer, o Dr. Andrew Weil, famoso autor de livros e autoridade em nutrição(*) da Harvard, “os alegados benefícios pra saúde dos ionizadores e água alcalina são falsos. Poupe seu dinheiro”. Esta opinião é semelhante a de outro especialista, o Dr. True Ott, que diz que os benefícios atribuídos à água alcalina são baseados em “junk science” (pseudociência), e alerta ainda que excesso de água alcalina pode causar câncer e artrite.

(*) O médico em questão é “autoridade em nutrição”, e infelizmente ninguém pode dizer o mesmo do Lair Ribeiro. Temos que reconhecer que ele é um famoso escritor de best-sellers de auto ajuda, um dos maiores palestrantes/oradores do país, e de fato tem um histórico em cardiologia, mas suas contribuições para a nutrição se resumem a hipóteses divulgadas com uma boa pitada de sensacionalismo e com objetivos duvidosos.

EDIT: 24/Set/2016: Tem gente que é tão fanática que sai procurando evidências pra reafirmar suas convicções, e acaba ficando totalmente cega. Teve alguém que comentou abaixo colando diversos links de papers científicos, sendo que alguns dos links dizem claramente que não há nenhuma comprovação de que água alcalina tenha algum efeito na sua saúde, e outros links são de pesquisas que simplesmente não tem os resultados abertos então não dá pra concluir nada. Por favor usem o senso crítico.

EDIT: 24/Set/2016: Pra quem não acredita na Wikipedia, veja outros links:
Revista Galileo (Globo): Água alcalina não passa de estratégia de vendas
IG: Especialistas alertam que água alcalina não traz benefícios à saúde.
Outro blog que fez uma pesquisa muito boa que contradiz fortemente os benefícios da água alcalina.

EDIT: 1/Fev/2017: Pra quem “só acredita em médicos famosos”, vejam Dr. Drauzio Varella em entrevista afirmando que “Não há nenhuma publicação séria mostrando que água alcalina tenha qualquer efeito”.

Há algumas formas documentadas de exportar emails do Outlook Express para o Outlook 2010. Um dos principais problemas desta migração, é que você precisa ter tanto o Outlook Express quanto o Outlook 2010 instalados na mesma máquina. Se você instalou o Outlook 2010 em uma máquina que não tinha anteriormente o Outlook Express, pode ser até impossível fazer esta migração, já que o Outlook Express não pode ser instalado em um Sistema Operacional de 64 bits.

Se você não tem ambos instalados na mesma máquina, a solução proposta costuma ser primeiramente importar as suas caixas EBX do Outlook Express para Windows Live Mail, e depois exportá-las do Windows Live Mail para o Outlook 2010.

Tendo passado por este procedimento, posso afirmar que é um procedimento bem complicado e chato. Primeiramente, notei que vários emails do Outlook Express não estavam sendo importados para o Windows Live Mail. Depois, notei que mesmo alguns emails que apareciam no Windows Live Mail não podiam ser exportados para o Outlook 2010, falhando com um MAPI error, e pelo que pesquisei não há correção disponível para sistemas 64-bit.

Para solucionar o problema, descobri a ferramenta Portable Outlook Express Message Extractor, um freeware que permite exportar as mensagens do Outlook Express em formato EML. Pelos meus testes, todos emails foram exportados, o que se provou melhor do que a importação do Windows Live Mail.

Após ter exportado todos arquivos EML, todos eles já vindo agrupados em estrutura de pastas idêntica aos folders do Outlook Express, eu ainda precisava de algo para importar estes emails para o Outlook 2010.

Encontrei alguns programas shareware que supostamente deveriam importar arquivos EML no Outlook, mas fiquei surpreso que o próprio Outlook não tem isso como funcionalidade nativa.

Ao invés de comprar o shareware, decidi criar minha própria macro VBA para isso, já que tenho muita experiência com VBA. Pra minha surpresa, descobri que apesar do Outlook conseguir abrir arquivos EML, não há uma forma programática de fazer isso puramente com VBA. Deste modo, fiz uma pequena macro VBA que percorre os arquivos EML de uma pasta, e abre cada um deles usando SHELL EXEC. Pode levar alguns milisegundos até o Outlook abrir o item, então o VBA aguarda até que algo esteja aberto no ActiveInspector. Por fim, este email é copiado para uma pasta escolhida, e em caso de sucesso o EML original é excluído.

A macro costuma travar algumas vezes, mas normalmente você pode reiniciá-la a qualquer momento e ela recomeça de onde parou (lembre-se que os EMLs importados são excluídos). Se a macro continuar travando constantemente, provavelmente o próximo EML possui algum problema. Neste caso você pode apagá-lo manualmente.

PS: Algumas vezes você pode abrir o EML manualmente e o Outlook vai abrir sem travar, mas pelos meus testes, todos os EMLs que travaram a macro eram arquivos sem importância, como recibos de leitura.

Segue abaixo o código VBA. Se você tiver qualquer dúvida ou problema, entre em contato (PS: tenho disponibilidade para freelance).

'----------------------------------------------------
' Code by Ricardo Drizin (contact info at http://www.drizin.com.br)
'----------------------------------------------------
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Option Explicit
 
'---------------------------------------------------------------------
' This method closes ActiveInspectors if any.
' All inporting is based on the assumption that the EML
' is opened by shell and we can refer to it through the ActiveInspector
'---------------------------------------------------------------------
Function CloseOpenInspectors() As Boolean
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim insp As Outlook.Inspector
    Dim count As Integer
    count = 0
repeat:
    count = count + 1
    Set insp = app.ActiveInspector
    If TypeName(insp) = "Nothing" Then
        CloseOpenInspectors = True
        Exit Function
    End If
    If TypeName(insp.CurrentItem) = "Nothing" Then
        CloseOpenInspectors = True
        Exit Function
    End If
    If (count > 100) Then
        MsgBox "Error. Could not close ActiveInspector. "
        CloseOpenInspectors = False
    End If
     
    insp.Close (olDiscard)
    GoTo repeat
End Function
 
 
'---------------------------------------------------------------------
' This method allows user to choose a Root Folder in Outlook
' All EML files will be imported under this folder
'---------------------------------------------------------------------
Function GetRootFolder() As Outlook.folder
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim NS As Outlook.NameSpace: Set NS = app.GetNamespace("MAPI")
    Dim fold As Outlook.folder
    Set fold = NS.PickFolder
    'MsgBox fold.Name
    Set GetRootFolder = fold
End Function
 
'---------------------------------------------------------------------
' Creates a child folder in Outlook, under root folder.
'---------------------------------------------------------------------
Function GetChildFolder(parentFolder As Outlook.folder, name As String)
    On Error Resume Next
    Dim fold2 As Outlook.folder
    Set fold2 = parentFolder.folders.Item(name)
    If Err.Number Then
        On Error GoTo 0
        Set fold2 = parentFolder.folders.Add(name)
    End If
    On Error GoTo 0
    'MsgBox fold2.Name
    Set GetChildFolder = fold2
End Function
     
'---------------------------------------------------------------------
' Imports the EML open in the current ActiveInspector
' into the given folder
'---------------------------------------------------------------------
Sub ImportOpenItem(targetFolder As Outlook.folder)
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim insp As Outlook.Inspector: Set insp = app.ActiveInspector
     
    Dim retries As Integer
    retries = 0
    While TypeName(insp) = "Nothing" ' READING PANE should be visible, or else it will not work.
        'MsgWaitObj (1000)
        Sleep (50)
        DoEvents
        Sleep (50)
        Set insp = app.ActiveInspector
        retries = retries + 1
        'If retries > 100 Then
        '    Stop
        'End If
    Wend
     
    If TypeName(insp) = "Nothing" Then
        MsgBox "Error! Could not find open inspector for importing email."
        Exit Sub
    End If
     
     
    Dim m As MailItem, m2 As MailItem, m3 As MailItem
    Set m = insp.CurrentItem
    'MsgBox m.Subject
    Set m2 = m.Copy
    Set m3 = m2.Move(targetFolder)
    m3.Save
    Set m = Nothing
    Set m2 = Nothing
    Set m3 = Nothing
    insp.Close (olDiscard)
    Set insp = Nothing
End Sub
 
 
'---------------------------------------------------------------------
' Scans a given folder for *.EML files and import them
' into the given folder.
' Each EML file will be deleted after importing.
'---------------------------------------------------------------------
Sub ImportEMLFromFolder(targetFolder As Outlook.folder, emlFolder As String)
    If Right(emlFolder, 1) <> "\" Then emlFolder = emlFolder & "\"
    Dim firstImport As Boolean: firstImport = True
    
    Dim file As String
    Dim count As Integer: count = 0
    'MsgBox fold.Items.count
    'Exit Sub
    file = Dir(emlFolder & "*.eml")
     
repeat:
    If file = "" Then
        'MsgBox "Finished importing EML files. Total = " & count
        Debug.Print "Finished importing EML files. Total = " & count
        Exit Sub
    End If
    count = count + 1
     
    Debug.Print "Importing... " & file & " - " & emlFolder
    Shell ("explorer """ & emlFolder & file & """")
    'If firstImport Then Stop
    firstImport = False
    Sleep (50)
    On Error GoTo nextfile
    Call ImportOpenItem(targetFolder)
    Call Kill(emlFolder & file)
nextfile:
    On Error GoTo 0
    Sleep (50)
     
    file = Dir()
    GoTo repeat
End Sub
 
'---------------------------------------------------------------------
' Main method.
' User chooses an Outlook root Folder, and a Windows Explorer root folder.
' All EML files inside this folder and in immediate subfolders will be imported.
'---------------------------------------------------------------------
Sub ImportAllEMLSubfolders()
    Call CloseOpenInspectors
     
    MsgBox "Choose a root folder for importing "
    Dim rootOutlookFolder As Outlook.folder
    Set rootOutlookFolder = GetRootFolder()
    If rootOutlookFolder Is Nothing Then Exit Sub
     
    Dim rootWindowsFolder As String
    rootWindowsFolder = "D:\OutlookExpress-EMLs-folder"
    rootWindowsFolder = InputBox("Choose a windows folder where you have your EML files", , rootWindowsFolder)
    If IsNull(rootWindowsFolder) Or IsEmpty(rootWindowsFolder) Or rootWindowsFolder = "" Then Exit Sub
    If Right(rootWindowsFolder, 1) <> "\" Then rootWindowsFolder = rootWindowsFolder & "\"
     
    Dim subFolders As New Collection
     
    Dim subFolder As String
    subFolder = Dir(rootWindowsFolder, vbDirectory)
repeat:
    If subFolder = "." Or subFolder = ".." Then GoTo nextdir
    If (GetAttr(rootWindowsFolder & subFolder) And vbDirectory) = 0 Then GoTo nextdir
    subFolders.Add (subFolder)
nextdir:
    subFolder = Dir()
    If subFolder <> "" Then GoTo repeat
 
Dim outlookFolder As Outlook.folder
 
' Importing main folder
Call ImportEMLFromFolder(rootOutlookFolder, rootWindowsFolder)
 
' Importing subfolders
While subFolders.count
    subFolder = subFolders.Item(1)
    subFolders.Remove (1)
    Set outlookFolder = GetChildFolder(rootOutlookFolder, subFolder)
    Debug.Print "Importing " & rootWindowsFolder & subFolder & " into Outlook folder " & outlookFolder.name & "..."
    Call ImportEMLFromFolder(outlookFolder, rootWindowsFolder & subFolder)
Wend
    Debug.Print "Finished"
     
End Sub

There are some documented ways of exporting Outlook Express emails to Outlook 2010. One major problem with this migration, is that you need to have both Outlook Express and Outlook 2010 installed on the same machine. If you have installed Outlook 2010 on a fresh Windows installation it could even be impossible to do, since Outlook Express cannot be installed on x64 Operating Systems.

If you don’t have both on the same machine, the alternative proposed solution is to import your EBX mailboxes from Outlook Express to Windows Live Mail first, and then exporting from Windows Live Mail to Outlook 2010.

Having been through that, I can tell you that this method is a pain in the ass. First of all, I noticed that many emails from Outlook Express were not being copied to Windows Live Mail. Next, I realized that even the emails which were appearing in Windows Live Mail could not be exported to Outlook 2010, failing with a MAPI error, and as far as I researched there is no fix available for 64-bit systems.

Having said that, I found this Portable Outlook Express Message Extractor, a nice freeware utility which could export EML files from Outlook Express. According to my tests, all emails have been exported, which proved to be better than Windows Live Mail importing.

After having exported EML files, all of them grouped in windows folders which mimic the same folder names of Outlook Express, I needed to found something to import those emails to Outlook.

I found some shareware programs that are supposed to import EML files into Outlook 2010, but I was very surprised that Outlook doesn’t have this as native feature.

Instead of buying the shareware, I decided to create my own VBA macro for that, since I have large VBA programming background. To my surprise, although Outlook can open EML files, there is no way to do it programatically only with VBA. So I created this VBA macro which loops through some folder, and opens each EML file by using SHELL EXEC. It may take a few milliseconds until Outlook opens the EML file, so the VBA waits until something is open in ActiveInspector. Finally, this email is copied into some chosen folder, and (in case of success) the original EML file is deleted.

This macro crashes sometimes, but you can restart the macro at any time, and it will restart from where it previously crashed (remember, all successfully imported EML files are deleted). If it keeps crashing after restart, then probably there is a problem with the next EML file which is about to be imported. In this case you can just delete the problematic EML.

PS: Sometimes you can open the EML yourself, without crashing Outlook, but according to my tests, everytime that a EML file was crashing Outlook it was something unimportant, like read receipts.

Here follows my VBA code. If you have any doubts or problems, let me know (and I’m available for VBA freelance).

'----------------------------------------------------
' Code by Ricardo Drizin (contact info at http://www.drizin.com.br)
'----------------------------------------------------
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Option Explicit
 
'---------------------------------------------------------------------
' This method closes ActiveInspectors if any.
' All inporting is based on the assumption that the EML
' is opened by shell and we can refer to it through the ActiveInspector
'---------------------------------------------------------------------
Function CloseOpenInspectors() As Boolean
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim insp As Outlook.Inspector
    Dim count As Integer
    count = 0
repeat:
    count = count + 1
    Set insp = app.ActiveInspector
    If TypeName(insp) = "Nothing" Then
        CloseOpenInspectors = True
        Exit Function
    End If
    If TypeName(insp.CurrentItem) = "Nothing" Then
        CloseOpenInspectors = True
        Exit Function
    End If
    If (count > 100) Then
        MsgBox "Error. Could not close ActiveInspector. "
        CloseOpenInspectors = False
    End If
     
    insp.Close (olDiscard)
    GoTo repeat
End Function
 
 
'---------------------------------------------------------------------
' This method allows user to choose a Root Folder in Outlook
' All EML files will be imported under this folder
'---------------------------------------------------------------------
Function GetRootFolder() As Outlook.folder
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim NS As Outlook.NameSpace: Set NS = app.GetNamespace("MAPI")
    Dim fold As Outlook.folder
    Set fold = NS.PickFolder
    'MsgBox fold.Name
    Set GetRootFolder = fold
End Function
 
'---------------------------------------------------------------------
' Creates a child folder in Outlook, under root folder.
'---------------------------------------------------------------------
Function GetChildFolder(parentFolder As Outlook.folder, name As String)
    On Error Resume Next
    Dim fold2 As Outlook.folder
    Set fold2 = parentFolder.folders.Item(name)
    If Err.Number Then
        On Error GoTo 0
        Set fold2 = parentFolder.folders.Add(name)
    End If
    On Error GoTo 0
    'MsgBox fold2.Name
    Set GetChildFolder = fold2
End Function
     
'---------------------------------------------------------------------
' Imports the EML open in the current ActiveInspector
' into the given folder
'---------------------------------------------------------------------
Sub ImportOpenItem(targetFolder As Outlook.folder)
    Dim app As Outlook.Application: Set app = CreateObject("Outlook.Application")
    Dim insp As Outlook.Inspector: Set insp = app.ActiveInspector
     
    Dim retries As Integer
    retries = 0
    While TypeName(insp) = "Nothing" ' READING PANE should be visible, or else it will not work.
        'MsgWaitObj (1000)
        Sleep (50)
        DoEvents
        Sleep (50)
        Set insp = app.ActiveInspector
        retries = retries + 1
        'If retries > 100 Then
        '    Stop
        'End If
    Wend
     
    If TypeName(insp) = "Nothing" Then
        MsgBox "Error! Could not find open inspector for importing email."
        Exit Sub
    End If
     
     
    Dim m As MailItem, m2 As MailItem, m3 As MailItem
    Set m = insp.CurrentItem
    'MsgBox m.Subject
    Set m2 = m.Copy
    Set m3 = m2.Move(targetFolder)
    m3.Save
    Set m = Nothing
    Set m2 = Nothing
    Set m3 = Nothing
    insp.Close (olDiscard)
    Set insp = Nothing
End Sub
 
 
'---------------------------------------------------------------------
' Scans a given folder for *.EML files and import them
' into the given folder.
' Each EML file will be deleted after importing.
'---------------------------------------------------------------------
Sub ImportEMLFromFolder(targetFolder As Outlook.folder, emlFolder As String)
    If Right(emlFolder, 1) <> "\" Then emlFolder = emlFolder & "\"
    Dim firstImport As Boolean: firstImport = True
    
    Dim file As String
    Dim count As Integer: count = 0
    'MsgBox fold.Items.count
    'Exit Sub
    file = Dir(emlFolder & "*.eml")
     
repeat:
    If file = "" Then
        'MsgBox "Finished importing EML files. Total = " & count
        Debug.Print "Finished importing EML files. Total = " & count
        Exit Sub
    End If
    count = count + 1
     
    Debug.Print "Importing... " & file & " - " & emlFolder
    Shell ("explorer """ & emlFolder & file & """")
    'If firstImport Then Stop
    firstImport = False
    Sleep (50)
    On Error GoTo nextfile
    Call ImportOpenItem(targetFolder)
    Call Kill(emlFolder & file)
nextfile:
    On Error GoTo 0
    Sleep (50)
     
    file = Dir()
    GoTo repeat
End Sub
 
'---------------------------------------------------------------------
' Main method.
' User chooses an Outlook root Folder, and a Windows Explorer root folder.
' All EML files inside this folder and in immediate subfolders will be imported.
'---------------------------------------------------------------------
Sub ImportAllEMLSubfolders()
    Call CloseOpenInspectors
     
    MsgBox "Choose a root folder for importing "
    Dim rootOutlookFolder As Outlook.folder
    Set rootOutlookFolder = GetRootFolder()
    If rootOutlookFolder Is Nothing Then Exit Sub
     
    Dim rootWindowsFolder As String
    rootWindowsFolder = "D:\OutlookExpress-EMLs-folder"
    rootWindowsFolder = InputBox("Choose a windows folder where you have your EML files", , rootWindowsFolder)
    If IsNull(rootWindowsFolder) Or IsEmpty(rootWindowsFolder) Or rootWindowsFolder = "" Then Exit Sub
    If Right(rootWindowsFolder, 1) <> "\" Then rootWindowsFolder = rootWindowsFolder & "\"
     
    Dim subFolders As New Collection
     
    Dim subFolder As String
    subFolder = Dir(rootWindowsFolder, vbDirectory)
repeat:
    If subFolder = "." Or subFolder = ".." Then GoTo nextdir
    If (GetAttr(rootWindowsFolder & subFolder) And vbDirectory) = 0 Then GoTo nextdir
    subFolders.Add (subFolder)
nextdir:
    subFolder = Dir()
    If subFolder <> "" Then GoTo repeat
 
Dim outlookFolder As Outlook.folder
 
' Importing main folder
Call ImportEMLFromFolder(rootOutlookFolder, rootWindowsFolder)
 
' Importing subfolders
While subFolders.count
    subFolder = subFolders.Item(1)
    subFolders.Remove (1)
    Set outlookFolder = GetChildFolder(rootOutlookFolder, subFolder)
    Debug.Print "Importing " & rootWindowsFolder & subFolder & " into Outlook folder " & outlookFolder.name & "..."
    Call ImportEMLFromFolder(outlookFolder, rootWindowsFolder & subFolder)
Wend
    Debug.Print "Finished"
     
End Sub