How to: Recover Tables Deleted from a Database
This topic shows how to create a sample Visual Basic for Applications (VBA) function that you can use to recover tables deleted from a Microsoft Access database under the following conditions:
The database has not been closed since the tables were deleted.
The database has not been compacted since the tables were deleted.
The tables were deleted using the Microsoft Access user interface.
The table does not contain any multivalue or Attachment fields.
Paste the following procedure into a standard module.
Sub RecoverDeletedTable()
On Error GoTo ExitHere
Dim db As DAO.Database
Dim strTableName As String
Dim strSQL As String
Dim intCount As Integer
Dim blnRestored As Boolean
Set db = CurrentDb()
For intCount = 0 To db.TableDefs.Count - 1
strTableName = db.TableDefs(intCount).Name
If Left(strTableName, 4) = "~tmp" Then
strSQL = "SELECT DISTINCTROW [" & strTableName & "].* INTO " & Mid(strTableName, 5) & " FROM [" & strTableName & "];"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
MsgBox "A deleted table has been restored, using the name '" & Mid(strTableName, 5) & "'", vbOKOnly, "Restored"
blnRestored = True
End If
Next intCount
If blnRestored = False Then
MsgBox "No recoverable tables found", vbOKOnly
End If
'*EXIT/ERROR*
ExitHere:
DoCmd.SetWarnings True
Set db = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Description
Resume ExitHere
End Sub