MartyConnelly
martyconnelly at shaw.ca
Sun Jul 25 13:30:48 CDT 2004
hmm.. I never thought of attaching form code to a newsgroup message
this way.
It would show the design quite easily
However you might find this useful as it uses same method.
Here is the method to dump everything in an mdb to text files in temp
directory via saveastext--loadfromtext method into a new mdb and then
compile it.
Code is very busy and concise..
I borrowed it from an Lyle Fairfield, access newsgroup posting
a long time ago. I have never seen GetObject used this way to startup
a second version of Access.
He was in charge of Dallas Fort Worth PC or Access UserGroup
at one time. Maybe Drew has come across him.
If you remove the kill txt statement, all your code will be available
from the temporary text files in temp directory.
This code is useful to try and recover clobbered or corrupted mdb files,
if you can open the mdb.
'===================================
'code provided by Lyle Fairfield
Sub BackUpThisTextFiles()
Dim a(1 To 5) As String
Dim bck As String
Dim con As Container
Dim doc As Document
Dim objAccess As Access.Application
Dim Ref As Reference
Dim txt As String
Dim zip As String
Dim z As Long
a(1) = "Tables"
a(2) = "Forms"
a(3) = "Reports"
a(4) = "Scripts"
a(5) = "Modules"
bck = DBEngine(0)(0).Name
bck = Left(bck, Len(bck) - 4) & "_BackUp.mdb"
Do While Forms.Count > 0
DoCmd.Close acForm, Forms(0).Name
Loop
Do While Reports.Count > 0
DoCmd.Close acReport, Reports(0).Name
Loop
Do
txt = Environ("temp") & "\" & CStr(Fix(Timer)) & ".txt"
Loop Until Len(Dir$(txt)) = 0
SaveAsText 6, "", bck
Set objAccess = GetObject(bck)
On Error Resume Next
With objAccess
For Each Ref In .References
.References.Remove Ref
Next Ref
End With
For Each Ref In References
With Ref
If Not .BuiltIn Then objAccess.References.AddFromFile Ref.FullPath
End With
Next Ref
Set Ref = Nothing
For z = 1 To 5
Set con = DBEngine(0)(0).Containers(a(z))
With con
For Each doc In .Documents
With doc
On Error Resume Next
SaveAsText z, .Name, txt
objAccess.Application.LoadFromText z, .Name, txt
On Error GoTo 0
End With
Next doc
End With
Next z
Kill txt
Set doc = Nothing
Set con = Nothing
With objAccess
.DoCmd.OpenModule _
(.DBEngine(0)(0).Containers("Modules").Documents(0).Name)
.DoCmd.RunCommand acCmdCompileAndSaveAllModules
.Application.Quit
End With
Set objAccess = Nothing
Shell SysCmd(acSysCmdAccessDir) & "MsAccess.Exe " & _
"""" & bck & """" & "/compact"
On Error Resume Next
zip = bck
FileName zip
zip = "d:\" & Format(Now(), "yyyymmddhhnnss") & zip
FileCopy bck, zip
MsgBox "All Done Creating " & bck
End Sub
'===================================
Private Sub FileName(ByRef sIn As String)
Dim pos As Long
Dim posForwardSlash As Long
pos = InStr(sIn, "\")
posForwardSlash = InStr(sIn, "/")
If pos = 0 Then pos = posForwardSlash
If pos Then
sIn = Mid(sIn, pos + 1)
FileName sIn
End If
End Sub
'===================================
Gustav Brock wrote:
>Hi Marty
>
>
>
>>you can try to use the undocumented SaveAsText and LoadFromText, may
>>help if an object is corrupted or otherwise behaving weirdly.
>>At the debug/immediate window type:
>>Application.SaveAsText acForm,"MyForm","c:\form.txt
>>or depending on Access version
>>SaveAsText acForm,"MyForm","c:\form.txt
>>You can then load the file into a new MDB.
>>Application.LoadFromText acForm,"MyForm","c:\from.txt"
>>
>>
>
>This is very handy! Thanks for that tip.
>This way you can easily include a small form and other objects in a
>message like this without attachments.
>
>Have you more small gems like this?
>
>/gustav
>
>
>
--
Marty Connelly
Victoria, B.C.
Canada