[AccessD] Programatically opening Word docs from Access

Hewson, Jim JHewson at nciinc.com
Fri Jul 25 07:39:35 CDT 2008


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.

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




More information about the AccessD mailing list