[AccessD] Programatically opening Word docs from Access

rosalyn.clarke at barclays.com rosalyn.clarke at barclays.com
Fri Jul 25 07:52:25 CDT 2008


Hi 

The only time I'm working with the word application object is to get at the
Selection property, which belongs to the application rather than the
document. Because I've defined the document as an object (or would have if
this was working), and I'm not referencing it through the application, I
don't *think* I need to reference Word when working with the document. I have
the Word object model referenced in my Access database... It's been a while
since I did much coding so I can't remember if there are differences in the
way you have to handle Word v. Excel.

I'm using 2003 by the way.

I just wish I knew why it worked on my old laptop and not this one! It not
only worked, it was very fast and I was feeling very pleased with myself, for
a little while!

Roz


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Hewson, Jim 
Sent: 25 July 2008 13:40
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Programatically opening Word docs from Access

When working with Excel through Access, I need to explicitly reference Excel
or use With - End With.
Is there a reason you don't use that syntax?

Jim
jhewson at nciinc.com 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
rosalyn.clarke at barclays.com
Sent: Friday, July 25, 2008 6:27 AM
To: word at dcomp.com; accessd at databaseadvisors.com
Subject: [AccessD] Programatically opening Word docs from Access

Hi guys

I'm (still) working on code to find and replace obsolete fonts in Word
documents.

I had this working last week but oddly, this week it is falling over.
What's
changed is I have a new laptop, but I can't see any differences.

The code errors at the line 

Set doc = WordBasic.FileOpen(Name:=sFullPath, Password:=strPassword)

...with a '448 named argument not found' error.

If you instantiate Word using Dim wrd as New Word.Application instead of the
CreateObject method, it instantiates Word and opens the document, but does
not associate the new document with the programmatically created Word
instance.

If you open the document using wrd.documents, it opens it read only and you
can't make any changes (this is a bug).

Apart from wondering if anyone has come across this behaviour before, I'm
wondering if it's worth me porting all my code into Word instead of running
it from Access. The full procedure is below.

TIA for any help...

Roz



Public Sub ProcessDoc2(sPath As String, sName As String, intID As
Integer)
On Error GoTo errProcessDoc2
'auto-update document / template

Dim wrd As Object
Dim doc As Word.Document
Dim sFullPath As String
    Dim iFonts As Integer
    Dim sFontName As String
    Dim J As Integer
    Dim X As Long, Y As Long
    Dim bFoundFont As Boolean
    Dim sFontList(99) As String
    Dim strPassword As String
Dim cmd As New ADODB.Command
Dim strSQL As String
Dim sProtection As String
Dim sNewFont As String
    
'open the document with password info, whatevs

strPassword = "footba11"

sFullPath = sPath & sName
Debug.Print sFullPath
    
Set wrd = CreateObject("Word.Application") Set doc =
WordBasic.FileOpen(Name:=sFullPath, Password:=strPassword)

If doc.ProtectionType <> wdNoProtection Then
    sProtection = doc.ProtectionType
    doc.Unprotect Password:=strPassword
End If

wrd.Visible = True

    iFonts = 0
    X = doc.Characters.Count
    Y = 0
    
sNewFont = "Expert Sans Regular"

'start grabbing selections of contiguous fonts and updating  Do Until Y >= X
    wrd.Selection.SelectCurrentFont
    sFontName = wrd.Selection.Font.Name

        For J = 1 To iFonts
           If sFontList(J) = sFontName Then bFoundFont = True
        Next J
        If Not bFoundFont Then
            iFonts = iFonts + 1
            sFontList(iFonts) = sFontName
        End If
        'update to new font if font is obsolete
        Select Case sFontName
        Case Is = "Barclays", "Barclays Serif", "Expert Serif Regular"
            UpdateProperty intID, "Font", sFontList(J), sNewFont, "Font
discontinued"
            wrd.Selection.Font.Name = sNewFont
        Case Else
            UpdateProperty intID, "Font", sFontList(J), "n/a", "No change -
check only"
        End Select
    Y = wrd.Selection.End
    wrd.Selection.Start = Y + 1
Loop

        
'reapply protection
If IsNull(sProtection) = False Then
    doc.Protect sProtection, Password:=strPassword End If
    
exitProcessDoc2:
    doc.Close True 'save document on Close
    wrd.Quit
    Exit Sub

errProcessDoc2:
    MsgBox Err.Number & " " & Err.Description
    doc.Close
    wrd.Quit
    Exit Sub

This e-mail and any attachments are confidential and intended solely for the
addressee and may also be privileged or exempt from disclosure under
applicable law. If you are not the addressee, or have received this e-mail in
error, please notify the sender immediately, delete it from your system and
do not copy, disclose or otherwise act upon any part of this e-mail or its
attachments.

Internet communications are not guaranteed to be secure or virus-free.
The Barclays Group does not accept responsibility for any loss arising from
unauthorised access to, or interference with, any Internet communications by
any third party, or from the transmission of any viruses. Replies to this
e-mail may be monitored by the Barclays Group for operational or business
reasons.

Any opinion or other information in this e-mail or its attachments that does
not relate to the business of the Barclays Group is personal to the sender
and is not given or endorsed by the Barclays Group.

Barclays Bank PLC.Registered in England and Wales (registered no.
1026167).
Registered Office: 1 Churchill Place, London, E14 5HP, United Kingdom.

Barclays Bank PLC is authorised and regulated by the Financial Services
Authority.

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
#############################################################################
###

This email transmission contains information from NCI Information Systems,
Inc. 
that may be considered privileged or confidential and is intended solely for
the named recipient.  If you have received this message in error, please
contact the sender immediately and be aware that the use, copying or
dissemination of this information is prohibited.

#############################################################################
###

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

This e-mail and any attachments are confidential and intended solely for the addressee and may also be privileged or exempt from disclosure under applicable law. If you are not the addressee, or have received this e-mail in error, please notify the sender immediately, delete it from your system and do not copy, disclose or otherwise act upon any part of this e-mail or its attachments.

Internet communications are not guaranteed to be secure or virus-free.
The Barclays Group does not accept responsibility for any loss arising from unauthorised access to, or interference with, any Internet communications by any third party, or from the transmission of any viruses. Replies to this e-mail may be monitored by the Barclays Group for operational or business reasons.

Any opinion or other information in this e-mail or its attachments that does not relate to the business of the Barclays Group is personal to the sender and is not given or endorsed by the Barclays Group.

Barclays Bank PLC.Registered in England and Wales (registered no. 1026167).
Registered Office: 1 Churchill Place, London, E14 5HP, United Kingdom.

Barclays Bank PLC is authorised and regulated by the Financial Services Authority.




More information about the AccessD mailing list