G
gm.miller
I have this database that has worked great up until now. When
created, all users in the office were using Access 2003 and Word
2003. Now, two computers are using Access 2003 and Word 2007.
The problem has something to do with the 2007 users when the word
document is saved. Only these users can further open up the document
to view/edit. The 2003 users, when trying to open up the document get
nothing but gargle and a pop up box to select the encoding method to
view the document. However, when the 2003 users run this database and
create a new document, it is useable by all users still.
I know that in Word 2007, you can select SaveAs 97-2003 document when
saving, so I am thinking that I have to change the code accordingly
somehow.
Here is my code that works under the 2003 Office system:
Private Sub RunWordTemplate_Click()
On Error GoTo Err_RunWordTemplate_Click
Dim intAnswerMe As Integer
'Fill in Work Order Description if blank to avoid Null error in
Word
If IsNull(Me.WODesc.Value) Or _
Me.WODesc = 0 Then
intAnswerMe = MsgBox("Please enter in a Work Order
Description", vbOKOnly + vbInformation, "Description Needed")
Me.WODesc.SetFocus
Exit Sub
End If
Dim oApp As Object 'Variable for Word
Dim sFilename As String 'Variable for Auto-Save file name
Dim strTemplateName As String 'Variable for Word Template to be
used
Dim objWORDdoc As Object
'Save Record
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
'Create path to Quotation Template
strTemplateName = "\\Sharppc\ServerFiles\ProjectData\Quotations
\QuotationTemp.dot"
'Create default SaveName for New Quotation being written
sFilename = "\\Sharppc\ServerFiles\ProjectData\Quotations\" &
Me.WONum.Value & " - " & Me.CompanyName.Value & ".doc"
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
If Dir(sFilename) = "" Then 'Test to see if
created filename already exists
'and if not, open
Template to fill in date
Set oApp = CreateObject("Word.Basic") 'otherwise just open
that filename already
With oApp
.filenew Template:=strTemplateName
'Set bookmarks in QuotationTemp to equal values of new
Quoation Number created
.EditBookmark Name:="quotedate", GoTo:=True
.Insert (Format(Me.WODate, "mmmm dd, yyyy")) 'insert date
of quote
.EditBookmark Name:="quotenum", GoTo:=True
.Insert (CStr(Me.WONum)) 'insert work
order number
.EditBookmark Name:="companyname", GoTo:=True
.Insert (CStr(Me.CompanyName)) 'insert
company name
'This code will make sure that if the street address has
two lines, both are inserted
If IsNull(DLookup("[CustAdd2]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'")) Or _
DLookup("[CustAdd2]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'") = 0 Then
.EditBookmark Name:="address", GoTo:=True 'insert
Line 1 address
.Insert ((CStr(DLookup("[CustAdd1]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))))
Else
.EditBookmark Name:="address", GoTo:=True 'insert
Line 1 & 2 address
.Insert (CStr(DLookup("[CustAdd1]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))) & vbCrLf &
(CStr(DLookup("[CustAdd2]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'")))
End If
.EditBookmark Name:="citystate", GoTo:=True
.Insert ((CStr(DLookup("[CustCity]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))) & ", " &
(CStr(DLookup("[StateID]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'"))) & " " & (CStr(DLookup("[CustZip]",
"ContactsTbl", "[Contact]='" & Me.Contact.Value & "'"))))
.EditBookmark Name:="custname", GoTo:=True
.Insert (CStr(Me.Contact))
.EditBookmark Name:="subject", GoTo:=True
.Insert (CStr(Me.WODesc))
.EditBookmark Name:="firstname", GoTo:=True
.Insert (CStr(DLookup("[fName]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'")) & ",")
.filesaveas Name:=sFilename 'save Quotation with auto save
name
End With
Else 'If filename already exists, just open the file at
this point
oApp.Documents.Open sFilename
oApp.ActiveDocument.Save
End If
Exit_RunWordTemplate_Click:
Exit Sub
Err_RunWordTemplate_Click:
MsgBox Err.Description
Resume Exit_RunWordTemplate_Click
End Sub
***********************************************
I have tried replacing this line:
..filesaveas Name:=sFilename 'save Quotation with auto save name
with this code:
If oApp.Version = 12 Then
.filesaveas Name:=sFilename, _
.FileFormat:=0
Else
.filesaveas Name:=sFilename 'save Quotation with auto save name
End If
But, this does not work either.
It was suggest that this line of code:
Set oApp = CreateObject("Word.Basic")
might be casuing me an issue, but I am pretty much clueless as to how
to fix this. I am barely over the newbie range and still learning on
the fly, and if someone can point out how to fix this code to work so
that it will check to see which version of Word is running and save
the file in a 97-2003 format accordingly, I would be MUCH
appreciative. I have been looking online and can't seem to pinpoint
anything down that works.
THank you, Jerry
created, all users in the office were using Access 2003 and Word
2003. Now, two computers are using Access 2003 and Word 2007.
The problem has something to do with the 2007 users when the word
document is saved. Only these users can further open up the document
to view/edit. The 2003 users, when trying to open up the document get
nothing but gargle and a pop up box to select the encoding method to
view the document. However, when the 2003 users run this database and
create a new document, it is useable by all users still.
I know that in Word 2007, you can select SaveAs 97-2003 document when
saving, so I am thinking that I have to change the code accordingly
somehow.
Here is my code that works under the 2003 Office system:
Private Sub RunWordTemplate_Click()
On Error GoTo Err_RunWordTemplate_Click
Dim intAnswerMe As Integer
'Fill in Work Order Description if blank to avoid Null error in
Word
If IsNull(Me.WODesc.Value) Or _
Me.WODesc = 0 Then
intAnswerMe = MsgBox("Please enter in a Work Order
Description", vbOKOnly + vbInformation, "Description Needed")
Me.WODesc.SetFocus
Exit Sub
End If
Dim oApp As Object 'Variable for Word
Dim sFilename As String 'Variable for Auto-Save file name
Dim strTemplateName As String 'Variable for Word Template to be
used
Dim objWORDdoc As Object
'Save Record
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
'Create path to Quotation Template
strTemplateName = "\\Sharppc\ServerFiles\ProjectData\Quotations
\QuotationTemp.dot"
'Create default SaveName for New Quotation being written
sFilename = "\\Sharppc\ServerFiles\ProjectData\Quotations\" &
Me.WONum.Value & " - " & Me.CompanyName.Value & ".doc"
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
If Dir(sFilename) = "" Then 'Test to see if
created filename already exists
'and if not, open
Template to fill in date
Set oApp = CreateObject("Word.Basic") 'otherwise just open
that filename already
With oApp
.filenew Template:=strTemplateName
'Set bookmarks in QuotationTemp to equal values of new
Quoation Number created
.EditBookmark Name:="quotedate", GoTo:=True
.Insert (Format(Me.WODate, "mmmm dd, yyyy")) 'insert date
of quote
.EditBookmark Name:="quotenum", GoTo:=True
.Insert (CStr(Me.WONum)) 'insert work
order number
.EditBookmark Name:="companyname", GoTo:=True
.Insert (CStr(Me.CompanyName)) 'insert
company name
'This code will make sure that if the street address has
two lines, both are inserted
If IsNull(DLookup("[CustAdd2]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'")) Or _
DLookup("[CustAdd2]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'") = 0 Then
.EditBookmark Name:="address", GoTo:=True 'insert
Line 1 address
.Insert ((CStr(DLookup("[CustAdd1]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))))
Else
.EditBookmark Name:="address", GoTo:=True 'insert
Line 1 & 2 address
.Insert (CStr(DLookup("[CustAdd1]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))) & vbCrLf &
(CStr(DLookup("[CustAdd2]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'")))
End If
.EditBookmark Name:="citystate", GoTo:=True
.Insert ((CStr(DLookup("[CustCity]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'"))) & ", " &
(CStr(DLookup("[StateID]", "ContactsTbl", "[Contact]='" &
Me.Contact.Value & "'"))) & " " & (CStr(DLookup("[CustZip]",
"ContactsTbl", "[Contact]='" & Me.Contact.Value & "'"))))
.EditBookmark Name:="custname", GoTo:=True
.Insert (CStr(Me.Contact))
.EditBookmark Name:="subject", GoTo:=True
.Insert (CStr(Me.WODesc))
.EditBookmark Name:="firstname", GoTo:=True
.Insert (CStr(DLookup("[fName]", "ContactsTbl",
"[Contact]='" & Me.Contact.Value & "'")) & ",")
.filesaveas Name:=sFilename 'save Quotation with auto save
name
End With
Else 'If filename already exists, just open the file at
this point
oApp.Documents.Open sFilename
oApp.ActiveDocument.Save
End If
Exit_RunWordTemplate_Click:
Exit Sub
Err_RunWordTemplate_Click:
MsgBox Err.Description
Resume Exit_RunWordTemplate_Click
End Sub
***********************************************
I have tried replacing this line:
..filesaveas Name:=sFilename 'save Quotation with auto save name
with this code:
If oApp.Version = 12 Then
.filesaveas Name:=sFilename, _
.FileFormat:=0
Else
.filesaveas Name:=sFilename 'save Quotation with auto save name
End If
But, this does not work either.
It was suggest that this line of code:
Set oApp = CreateObject("Word.Basic")
might be casuing me an issue, but I am pretty much clueless as to how
to fix this. I am barely over the newbie range and still learning on
the fly, and if someone can point out how to fix this code to work so
that it will check to see which version of Word is running and save
the file in a 97-2003 format accordingly, I would be MUCH
appreciative. I have been looking online and can't seem to pinpoint
anything down that works.
THank you, Jerry