Access2013はADPをサポートしていません。 ADPのいくつかの代替案が示されています。
私のADPには、フォーム、レポート、マクロ、およびモジュールのみが含まれています。このADPをAccess2013で使用したい(以前のバージョンのAccessでは使用していません)。
Access2013でADPをリンクされたAccessデスクトップデータベースに変換したり、オブジェクトをACCDEファイルにインポートしたりする方法が見つかりませんでした。
Access 2013を使用してADPをリンクされたAccessデスクトップデータベースに変換したり、オブジェクトをACCDEファイルにインポートしたりするにはどうすればよいですか?
Access 2013を使用してADPをリンクされたAccessデスクトップデータベースに変換したり、オブジェクトをACCDEファイルにインポートしたりするにはどうすればよいですか?
できません。 Access 2013はADPファイルでは機能しませんまったく。 Access 2013でADPファイルからオブジェクトをインポートしようとすると、次のエラーが発生します。
あなたがする必要があるのは
.accdb
または.mdb
ファイルにインポートしてから.accdb
または.mdb
ファイルをAccess2013マシンに戻し、そこから続行します。再編集:コメント
アクセス2013を使用してADPをリンクされたAccessデスクトップデータベースに変換する方法はありませんか?
どうやらそうではありません。 VBAを使用してFormオブジェクトを.adp
ファイルから.accdb
ファイルにコピーしようとしても失敗します。次のコード:
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
...次の結果が生成されます。
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.
卑劣になって.adp
ファイルの名前を.mdb
に変更しようとすると、Access2013はそれを読み取りません。
前述したように、Access 2010(またはそれ以前)を使用して、オブジェクトを.adp
ファイルから.accdb
または.mdb
ファイルに抽出する必要があります。 次にAccess2013で.accdb
または.mdb
ファイルを操作できます。
Officeの使用<2013例:2010 2007
テキストとして保存/テキストからの読み込みを使用してフォームを転送してみてください。テキストファイルを編集して、accdbリンクテーブルのレコードソースを準備できます。
部分的でクリーン化されていないコードですが、アイデアが得られます
モジュールLoadSaveForm:
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
SaveMDBObjectsAsText()を実行して、何が起こるかを把握します