ACC97: No Error When AddFromFile Creates Duplicate Procedure (171072)
The information in this article applies to:
This article was previously published under Q171072 Advanced: Requires expert coding, interoperability, and multiuser skills.
SYMPTOMS
The AddFromFile method does not generate an error when it adds a duplicate
procedure to a module.
CAUSE
When the AddFromFile method inserts a procedure into a module, Visual Basic
for Applications tries to compile all code in the target module first, and
then inserts the procedure if successful.
If you use the AddFromFile method multiple times to insert the same
procedure into the same target module, Visual Basic for Applications does
not detect a compile error until the third attempt. On the first attempt,
Visual Basic for Applications successfully compiles the code, and then
inserts the procedure from the text file. On the second attempt, Visual
Basic for Applications successfully compiles the code in the target module,
which now includes one instance of the procedure from the text file; it
then inserts a second copy of the procedure from the text file. On the
third attempt, Visual Basic for Applications detects a compile error
because there are two instances of the same procedure in the target module.
RESOLUTION
To prevent the AddFromFile method from inserting a duplicate procedure, use
the Find method of the Module object to determine if the procedure already
exists in the module. To do so, follow these steps:
- Repeat steps 1 through 4 from the "Steps to Reproduce Behavior" section
later in this article.
- Type the following procedure:
Function ImportProc(vbProcName As String)
Dim mdl As Module
Dim vbLineStop As Long
Set mdl = Modules(0)
vbLineStop = mdl.CountOfLines
If Not mdl.Find(vbProcName, 1, 1, vbLineStop, 1, False) Then
mdl.AddFromFile "C:\My Documents\Test.txt"
Else
MsgBox "'" & vbProcName & "' already exists in module."
End If
End Function
- To test this function, type the following line in the Debug window,
and then press ENTER:
?ImportProc("Sub AddFromFileTest()")
Note that the AddFromFileTest procedure is successfully inserted into
the module.
- Repeat step 3 to run the procedure again.
Note that the procedure is not inserted into the module, and that you
receive the message:
'Sub AddFromFileTest()' already exists in module.
STATUS
This behavior is by design.
REFERENCES
For more information about using the AddFromFile method, search the Help
Index for "AddFromFile method."
For more information about using the Find method, search the Help Index
for "Find method", and then "Find Method (Microsoft Access Reference)".
Modification Type: | Major | Last Reviewed: | 9/25/2003 |
---|
Keywords: | kbcode kbprb kbprogramming KB171072 |
---|
|