To see if the database contains macros or not, you can use document methods from the DAO. Here is an example from https://msdn.microsoft.com/en-us/library/office/ff191764.aspx :
Sub ContainerObjectX() Dim dbsNorthwind As Database Dim ctrLoop As Container Dim prpLoop As Property Dim docItem As Document ' Set dbsNorthwind = OpenDatabase("Northwind.mdb") Set dbsNorthwind = CurrentDb With dbsNorthwind ' Enumerate Containers collection. For Each ctrLoop In .Containers Debug.Print "Properties of " & ctrLoop.Name _ & " container" ' Enumerate Properties collection of each ' Container object. For Each prpLoop In ctrLoop.Properties Debug.Print " " & prpLoop.Name _ & " = "; prpLoop Next prpLoop For Each docItem In ctrLoop.Documents Debug.Print " docItem.Name = "; docItem.Name Next docItem Next ctrLoop .Close End With End Sub
So you need to check the documents in the Scripts container.
My initial answer: I think you can use ExportXML and ImportXML, it is much more powerful and able to export and import all access objects. Example:
ExportXML acExportTable, "tblMain", CM_GetDBPath() & "AccessFunc_Tbl.xml" _ , CM_GetDBPath() & "AccessFunc_TblShema.xml", CM_GetDBPath() & "AccessFunc_Tbl.xsl" _ , "Images", , acEmbedSchema .... ImportXML CM_GetDBPath() & "AccessFunc_Tbl.xml", acAppendData
Full example: http://5codelines.net/wp-content/uploads/xml_1_sampe.rar
You can also use the ADODB library.
Public Function EportTblToXml(ByVal imTblFrom As String _ , ByVal imFileTo As String) Dim rstData As ADODB.Recordset Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection Set rstData = New ADODB.Recordset rstData.Open "SELECT * FROM " & imTblFrom, cnn _ , adOpenKeyset, adLockOptimistic Call SaveRstToXml(rstData, imFileTo) rstData.Close End Function Public Function LoadXmlToRst(ByVal stFileName As String) As ADODB.Recordset Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset rst.Open stFileName Set LoadXmlToRst = rst End Function
Sergey
source share