我有一些问题,可以真正使用一些帮助。我的组织最近从Office 2007迁移到Office 2010.我有一个使用Access 2007开发的数据库(使用.accdb数据库文件类型)。在整个迁移过程中,我仍在对数据库进行更新。所有更新都是通过Office 2007计算机完成的,所有内容都适用于我部署到的2010系统,以及2007年的方框。现在的问题是,由于所有计算机都在2010年正式运行,我似乎无法从Access 2010创建一个Accde文件。我收到的错误是:"命令或操作' MakeMDEFile'现在还没有。" *您可能位于只读数据库或早期版本的未转换数据库中..."代码编译时没有错误,我的引用很好。
我试图重新编译代码,在" C:\ Program Files中重命名向导\ Microsoft Office \ Office14 \ ACCWIZ"文件夹并让它们重新安装,并根据本文将我的所有对象导入新数据库:http://msdn.microsoft.com/library/office/dn602608%28v=office.14%29.aspx;一切都无济于事。我没有任何网页内容或特定的Access 2010,因为我只对2007年创建的内容进行了调整。我确实读到Access必须在与其创建的版本相同的版本上进行编译,但是我认为既然2007年和2010年都使用.accdb文件格式,它会兼容吗?有什么建议吗?谢谢。
感谢您的快速回答!这很有效。我能够使用代码成功导出我的数据库,并且我还导入了除查询之外的所有对象。 (我能够创建accde。)因为我有很多对象,所以我使用脚本导入所有内容。我现在遇到的问题是我的SQL查询。导出脚本命名文本文件与SQL查询略有不同,我不知道如何处理它们。下面是我的代码,适用于其余的对象:
Public Sub batchImport_queries()
On Error GoTo batchImport_Err
Dim objFS As Object, objFolder As Object
Dim objFiles As Object, objF1 As Object
Dim strFolderPath As String
strFolderPath = "C:\Users\Me\Desktop\dbexport\queries\"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(strFolderPath)
Set objFiles = objFolder.files
For Each objF1 In objFiles
objF1.Name = Right(objF1.Name, Len(objF1.Name) - 6)'strips "Query_"
objF1.Name = Left(objF1.Name, Len(objF1.Name) - 3) 'strips ".txt"
Application.Application.LoadFromText acQuery, objF1.Name, strFolderPath & objF1.Name
Next
Set objF1 = Nothing
Set objFiles = Nothing
Set objFolder = Nothing
Set objFS = Nothing
batchImport_Exit:
Exit Sub
batchImport_Err:
MsgBox Err.Number & " " & Err.Description
Resume batchImport_Exit
End Sub
适用于以下查询:" Query_qryAvailable.txt"但是SQL看起来像这样:" Query_~sq_cCIPSSubform~sq_RosterSubform.txt"。它似乎是封装" ~sq_c"在查询名称的第一部分周围,然后是在文件名的最后部分与它相关联的表单/子表单/控件...或者我可以完全关闭。我无法弄清楚这种模式。他们中的一些人有" ~sq_f"相反,只是在主要部分。(我猜这些是用于表单吗?)无论如何,是否有更好的方法来格式化文件名(如果必须要做什么)将这些文件删除到我的原始查询名称并正确导入?如果这没有意义,请告诉我。谢谢你的时间。
答案 0 :(得分:1)
可以将Access数据库导出到文本文件,请参见此处:http://www.access-programmers.co.uk/forums/showthread.php?t=99179。
Option Compare Database
Option Explicit
Public Sub ExportDatabaseObjects()
On Error GoTo Err_ExportDatabaseObjects
Dim db As Database
'Dim db As DAO.Database
Dim td As TableDef
Dim d As Document
Dim c As Container
Dim i As Integer
Dim sExportLocation As String
Set db = CurrentDb()
sExportLocation = "C:\Temp\" 'Do not forget the closing back slash! ie: C:\Temp\
For Each td In db.TableDefs 'Tables
If Left(td.Name, 4) <> "MSys" Then
DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".txt", True
End If
Next td
Set c = db.Containers("Forms")
For Each d In c.Documents
Application.SaveAsText acForm, d.Name, sExportLocation & "Form_" & d.Name & ".txt"
Next d
Set c = db.Containers("Reports")
For Each d In c.Documents
Application.SaveAsText acReport, d.Name, sExportLocation & "Report_" & d.Name & ".txt"
Next d
Set c = db.Containers("Scripts")
For Each d In c.Documents
Application.SaveAsText acMacro, d.Name, sExportLocation & "Macro_" & d.Name & ".txt"
Next d
Set c = db.Containers("Modules")
For Each d In c.Documents
Application.SaveAsText acModule, d.Name, sExportLocation & "Module_" & d.Name & ".txt"
Next d
For i = 0 To db.QueryDefs.Count - 1
Application.SaveAsText acQuery, db.QueryDefs(i).Name, sExportLocation & "Query_" & db.QueryDefs(i).Name & ".txt"
Next i
Set db = Nothing
Set c = Nothing
MsgBox "All database objects have been exported as a text file to " & sExportLocation, vbInformation
Exit_ExportDatabaseObjects:
Exit Sub
Err_ExportDatabaseObjects:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_ExportDatabaseObjects
End Sub
如果原则仍然存在,您应该能够将结果对象导入新数据库。如果权限有任何问题,这应该在文本文件中变得明显,但通常会删除所有权限。