ModulesAddIn_BulkImportExport Version 1.3
(18-May-2009)
Copyright (C) A.D. Tejpal 2008
Thanks for trying ModulesAddIn_BulkImportExport
for MS Access
This utility enables bulk import of .bas, .cls or .txt files as general or class
modules, or export of existing modules to destination folder as .bas / .cls
files.
Requirements
Microsoft Access 2000 or later
Microsoft Windows 98 or later
References:
DAO 3.6
Microsoft Scripting RunTime
Visual Basic for Applications Extensibility 5.3
Note: It is not necessary for the host db
to have the above references.
Installation
The folder ModulesAddIn_BulkImportExport should be put directly on the C: drive, so that the
path for .mda file is -
C:\ModulesAddIn_BulkImportExport\ModulesAddIn_BulkImportExport.mda. (This is
important, so as to establish the correct registry key)
Open any database in Access and click on Tools > Add-Ins > Add-In
Manager.
Click on Add New. Browse to the folder and file at
C:\ModulesAddIn_BulkImportExport\ModulesAddIn_BulkImportExport.mda
Click OK. This will copy the .mda file to Microsoft's default Add-in folder for
Access.
You have to do this only once.
Use
To use ModulesAddIn_BulkImportExport from within any database, click Tools > Add-Ins >
ModulesAddIn_BulkImportExport
Imp: Before invoking the AddIn, it
should be ensured that the host db is free of any compile error.
========================================================
Technical Notes:
Add-In named ModulesAddIn_BulkImportExport,
when invoked in the host db, displays a list box at right showing
existing modules. On clicking the command button captioned "Get
Folder", the user can browse to the folder containing .bas, .cls or .txt files
required to be imported as modules. As soon as the folder is selected, the
list box at left displays the names of files contained in this folder, along
with type of module and line count..
Selection of one or more files in the
list box, followed by clicking of button captioned "Import", imports
the selected files as new modules. Sorting is devised in such a manner that
freshly imported modules get displayed prior to those already existing.
Similarly existing modules as selected in
the list box at right, can be exported as .bas / .cls files to destination
folder. This folder, named ExportedModules, gets created in the same directory
where the host db is located.
Certain interesting factors pertaining
to Add-Ins in general, are mentioned below:
1 - For code contained in modules
belonging to the Add-In:
(a) If the
AddIn is opened independently, CurrentProject / CurrentDb are identical
to CodeProject / CodeDb respectively (all refer to AddIn itself).
(b) If the AddIn
is activated in host db, CurrentProject / CurrentDb refer to host db
while CodeProject / CodeDb refer to AddIn itself.
(c) Host
applications AllForms / AllReports / AllModules collections can be accessed by code in
AddIn, using CurrentProject.
(d) Tables / Queries
are not covered by collections like those in prev para.
(e) While the AddIn
is in activated state, any query / table / form / report, whether in host
db or in the AddIn, as well as modules in host db can be opened directly by name, using DoCmd
statement in AddIn code, without having to use any special qualifier.
(f) If any pair of similar
objects exists both in the AddIn as well as the host db, code in AddIn
module will act upon the object located in the AddIn itself.
(g) For code in
AddIn module, when the AddIn is in activated mode, queries / recordests based
upon CurrentDb do not recognize the tables in AddIn itself, unless referred
via IN clause, giving full path of the AddIN. This path, returned by
CodeProject.FullName, refers to the original location of AddIn mda file e.g.
C:\ModulesAddIn_BulkImportExport\ModulesAddIn_BulkImportExport.mda and not the shadow AddIn file in AddIns
folder in MyDocuments. There is no such problem if queries / recordsets
are based upon CodeDb instead of CurrentDb.
(h) Modules belonging to the AddIn can not be opened by DoCmd mehod or otherwise addressed, even by code in the AddIn. DoCmd.CopyObject command can however be used
for copying modules from AddIn to host db.
2 - For code contained in modules
belonging to the host db:
(a) CurrentProject
/ CurrentDb are identical to CodeProject / CodeDb respectively, always
referring to the host db, irrespective of the fact whether the AddIn is in
activated state or not.
(b) Whereas code in
the AddIn can access all tables / queries / forms / reports, whether belonging
to AddIn or the host db (see para 1 (e) above), code in host db can
directly access only the objects belonging to host db itself.
Note: General module named basCommDlg,
an adaptation from Access Developer's Handbook, has been kindly provided by Bill Mosca
=============================================================