How to convert ADP to ACCDB using Access 2013?

Access 2013 does not support ADP. Some alternatives to ADP are given:

  • Convert ADP to a related Access Desktop database.
  • Import objects into an ACCDE file, and then create linked tables with existing data using an earlier version of Access.

My ADP contains only forms, reports, macros and modules. I want to use this ADP in Access 2013 (not in any earlier version of Access).

I did not find any way to convert ADP to a linked Access Desktop database or import objects into an ACCDE file in Access 2013.

How to convert ADP to a linked Access Desktop database or import objects into an ACCDE file using Access 2013?

+7
ms-access-2013 adp
source share
2 answers

How to convert ADP to a linked Access Desktop database or import objects into an ACCDE file using Access 2013?

You can not. Access 2013 will not work with ADP files at all . If you try to import objects from an ADP file into Access 2013, you will receive the following error:

Access Data Projects are no longer supported in this version of Access.

What you need to do is

  • Find a machine with Access 2010 or earlier,
  • use it to import requests, forms, etc. from ADP to a .accdb or .mdb , then
  • return this .accdb or .mdb back to your 2013 computer and continue from there.

edit re: comments

Cannot Convert ADP to a Linked Access Desktop Database Using Access 2013

Apparently not. Even an attempt to use VBA to copy a Form object from a .adp file to a .accdb file fails. The following code:

 Option Compare Database Option Explicit Sub adpImportTest() Dim dbPath As String, formName As String On Error GoTo adpImportTest_Error Debug.Print "Try importing a form from an .accdb file..." dbPath = "C:\Users\Gord\Documents\accdbTest.accdb" formName = "myCustomers" DoCmd.TransferDatabase acImport, "Microsoft Access", dbPath, acForm, formName, formName Debug.Print "Import succeeded." Debug.Print Debug.Print "Try importing a form from an .adp file..." dbPath = "C:\Users\Gord\Documents\NorthwindCS.adp" formName = "Customers" DoCmd.TransferDatabase acImport, "Microsoft Access", dbPath, acForm, formName, formName Debug.Print "Import succeeded." Exit Sub adpImportTest_Error: Debug.Print Err.Description End Sub 

... gives the following result:

 Try importing a form from an .accdb file... Import succeeded. Try importing a form from an .adp file... The search key was not found in any record. 

If we try to penetrate and rename the .adp file to .mdb , then Access 2013 will not read it:

Unrecognized database format

As I said, you need to use Access 2010 (or older) to extract objects from the .adp file to the .accdb or .mdb . You can then work with the .accdb or .mdb in Access 2013.

+10
source share

Using Office <2013, e.g. 2010 2007

Try using save as text / load from text to transfer forms. Then you can edit the text files that make up the files for your accdb related tables.

Partial and uncleaned code, but gives you an idea

LoadSaveForm module:

 Option Compare Database Option Base 0 Option Explicit Dim path$ Dim DateTimeString$ Dim app As Access.Application Function SaveFormAsText(FormName As String) As Boolean Dim sPath As String Access.SaveAsText acForm, FormName, "C:\Temp" & "\" & FormName & ".txt" End Function Function LoadFormFromText(FormName As String) Access.LoadFromText acForm, FormName, "C:\Temp" & "\" & FormName & ".txt" End Function Private Sub SaveMDBObjectsAsText() DateTimeString = Format(Now(), "yyyymmddhhnn") path = CurrentProject.path & "\" '& "AS_TEXT_" & DateTimeString & "\" If Dir(path) <> "" Then 'It exists Else On Error Resume Next MkDir path On Error GoTo 0 End If SaveDataAccessPagesAsText SaveFormsAsText SaveReportsAsText SaveModulesAsText 'SaveQueriesAsText CreateProjectFromText (path) End Sub Public Sub CreateProjectFromText(pathString As String) path = pathString 'SaveMDBBase SaveAccdbDBase LoadDataAccessPagesFromText LoadFormsFromText LoadReportsFromText LoadModulesFromText 'LoadQueriesFromText On Error Resume Next Dim r As Reference With app With .CurrentProject path = .FullName End With For Each r In .References With r If Not .BuiltIn Then app.References.Remove r End If End With Next r For Each r In References With r If Not .BuiltIn Then app.References.AddFromGuid r.GUID, r.Major, r.Minor End If End With Next r .RunCommand acCmdSaveAllModules .RunCommand acCmdCompileAndSaveAllModules .CloseCurrentDatabase .SysCmd 603, path, Replace(Replace(Replace(path, ".accdb", ".accde"), ".adp", ".ade"), ".mdb", ".mde") .Quit End With Set app = Nothing MsgBox "All Done with Text Backup" End Sub Private Sub SaveDataAccessPagesAsText() Dim filename$ Dim Name$ Dim DataAccessPage As AccessObject For Each DataAccessPage In CurrentProject.AllDataAccessPages Name = DataAccessPage.Name filename = path & Name & ".txt" SaveAsText acDataAccessPage, Name, filename Next DataAccessPage End Sub Private Sub SaveFormsAsText() Dim filename$ Dim Name$ Dim Form As AccessObject For Each Form In CurrentProject.AllForms Name = Form.Name filename = path & Name & ".txt" SaveAsText acForm, Name, filename Next Form End Sub Private Sub SaveReportsAsText() Dim filename$ Dim Name$ Dim Report As AccessObject For Each Report In CurrentProject.AllReports Name = Report.Name filename = path & Name & ".txt" SaveAsText acReport, Name, filename Next Report End Sub Private Sub SaveMacrosAsText() Dim filename$ Dim Name$ Dim Macro As AccessObject For Each Macro In CurrentProject.AllMacros Name = Macro.Name filename = path & Name & ".txt" SaveAsText acMacro, Name, filename Next Macro End Sub Private Sub SaveModulesAsText() Dim filename$ Dim Name$ Dim Module As AccessObject For Each Module In CurrentProject.AllModules Name = Module.Name filename = path & Name & ".txt" SaveAsText acModule, Name, filename Next Module End Sub Private Sub SaveQueriesAsText() Dim filename$ Dim Name$ Dim GetQueryNames As ADODB.Recordset Set GetQueryNames = CurrentProject.connection.OpenSchema(adSchemaViews) With GetQueryNames Do While Not .EOF Name = .Fields("TABLE_NAME") filename = path & Name & ".txt" SaveAsText acQuery, Name, filename .MoveNext Loop End With End Sub Private Function SaveAccdbDBase() As Database Dim ws As DAO.Workspace Dim db As DAO.Database 'Get default Workspace Set ws = DBEngine.Workspaces(0) Dim filename$ Dim Name$ Name = Replace(CurrentProject.Name, CurrentProject.path, "") If Name Like "*.adp" Then Name = Replace(Name, "adp", "accdb") Else Name = Replace(Name, "accdb", "adp") End If filename = path & Name 'Make sure there isn't already a file with the name of the new database If Dir(filename) <> "" Then Kill filename Set app = CreateObject("Access.Application") 'Create a new mdb file If Name Like "*.adp" Then Application.CreateAccessProject filename, getConnection.ConnectionString Else Set db = ws.CreateDatabase(filename, dbLangGeneral) End If db.Close Set db = Nothing 'SaveAsText 6, "", filename If Name Like "*.adp" Then app.Visible = True app.UserControl = True app.OpenAccessProject filename Else app.OpenCurrentDatabase filename End If app.SetOption "Show Navigation Pane Search Bar", True Set SaveAccdbDBase = db End Function Private Sub LoadDataAccessPagesFromText() Dim filename$ Dim Name$ Dim DataAccessPage As AccessObject For Each DataAccessPage In CurrentProject.AllDataAccessPages Name = DataAccessPage.Name filename = path & Name & ".txt" app.LoadFromText acDataAccessPage, Name, filename Next DataAccessPage End Sub Private Sub LoadFormsFromText() Dim filename$ Dim Name$ Dim Form As AccessObject For Each Form In CurrentProject.AllForms Name = Form.Name filename = path & Name & ".txt" On Error Resume Next app.LoadFromText acForm, Name, filename Next Form End Sub Sub CreateNewMDBFile() Dim ws As Workspace Dim db As Database Dim LFilename As String 'Get default Workspace Set ws = DBEngine.Workspaces(0) 'Path and file name for new mdb file LFilename = "c:\NewDB.mdb" 'Make sure there isn't already a file with the name of the new database If Dir(LFilename) <> "" Then Kill LFilename 'Create a new mdb file Set db = ws.CreateDatabase(LFilename, dbLangGeneral) 'For lookup tables, export both table definition and data to new mdb file DoCmd.TransferDatabase acExport, "Microsoft Access", LFilename, acTable, "Lookup Table1", "Lookup Table1", False 'For data entry tables, export only table definition to new mdb file DoCmd.TransferDatabase acExport, "Microsoft Access", LFilename, acTable, "DataEntry Table1", "DataEntry Table1", True db.Close Set db = Nothing End Sub 

Run SaveMDBObjectsAsText () to get an idea of ​​what will happen.

0
source share

All Articles