VBA - Controlling Access from Word: Create .mdb & table without opening Access?

Hi All

Please can you tell me if, using VBA from Word, it is possible to create a new table in an existing Access database without opening Access?  Currently I am using the attached code which, although it works fine, displays a macro security warning when it opens the database.  I know that I can set the macro security in Access to low, or digitally sign the code, but am thinking that, if I can achieve this without actually opening Access, then I won't need to do either.  Also, would Access need to be installed on a user's machine in order for this code to work?  If so, is there a better way to do this so that it doesn't need to be installed?

Any help appreciated as always.


Set objAccess = CreateObject("Access.Application")
With objAccess
    .OpenCurrentDatabase (C:\Test\MyDB.mdb)
    Set dBase = objAccess.CurrentDb
    Set tdf = dbs.CreateTableDef("Contacts")
    Set fld = tdf. _
    CreateField("Surname", DB_Text, 50)
    tdf.Fields.Append fld
    dBase.TableDefs.Append tdf
End with

Open in new window

MonteDelMarAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
NatchiketConnect With a Mentor Commented:
you should be able to it as long as DAO is installed on the machine, see
http://accessblog.net/2007/06/how-to-get-reference-to-dbengine.html
You need to be careful of the version, and I'm not sure if DAO is normally installed unless access is, in any case it should be straightforward to copy and register it.

However once you've got a handle on the DBEngine the rest will be plain sailing

Function testDBE()
Dim dbe As Object
Dim dBase As Object

Set dbe = CreateObject("DAO.DBEngine.36")
Set dBase = dbe.OpenDatabase("C:\Test\MyDB.mdb")
'etc as for your code

End Function
0
 
MonteDelMarAuthor Commented:
My hero!  Thank you so much for that - works a treat.
0
All Courses

From novice to tech pro — start learning today.