Como recuperar macros de um arquivo do Excel corrompido

Este post foi originalmente publicado em https://officevbavsto.blogspot.com/2011/05/recuperar-codigo-vba-do-excel.html.

Quem aqui nunca abriu aquele arquivo de Excel, que passou anos desenvolvendo, e se depara com o arquivo corrompido? O código que irei postar foi encontrado em sites gringos.

Seguem os passos para recuperar o arquivo do Excel:

  1. Abra o Microsoft Word e crie uma nova macro;
  2. Copie o código abaixo em um módulo novo;
  3. Mude o nome do arquivo que deseja recuperar os módulos;
  4. Adicione a referência Microsoft Excel 9.0 Object (no meu caso 14.0 por causa do Office 2010): Ferramentas > Referências > e Marque Microsoft Excel 9.0 Object Library;
  5. Execute o código (com o cursor no módulo, pressione F5);
  6. Se você receber uma mensagem de erro do tipo Open File, clique em Depurar e, em seguida continuar;
  7. Quando o código for executado, procure na pasta RecoverPath;
  8. Se funcionou, cada um dos arquivos *.txt terá o nome do módulo original do seu projeto VBA do Excel.

A recuperação dos módulos depende do nível que seu arquivo esteja corrompido.

Sub Recover_Excel_VBA_modules()
 
 Dim XL As Excel.Application
 Dim XLVBE As Object
 Dim i As Integer, j As Integer
 Dim XLSFileName As String, RecoverPath as string
 
 'mude para o nome do arquivo que estᠣorrompido, sem o xls mesmo
 XLSFileName = "c:\windows\desktop\publication catalog"
 RecoverPath="C:\temp\"
 
 Set XL = New Excel.Application
 XL.Workbooks.Open FileName:=XLSFileName + ".xls"
 Set XLVBE = XL.VBE
 
 j = XLVBE.VBProjects(1).VBComponents.Count
 
 For i = 1 To j
     Debug.Print XLVBE.VBProjects(1).VBComponents(i).Name
     XLVBE.VBProjects(1).VBComponents(i).Export _
     FileName:=recoverpath & _
     XLVBE.VBProjects(1).VBComponents(i).Name & ".txt"
 Next
 
 XL.Quit
 Set XL = Nothing
 
End Sub

Créditos

Image by Pexels from Pixabay