rosalyn.clarke at barclays.com
rosalyn.clarke at barclays.com
Fri Jul 25 10:13:09 CDT 2008
Fantastic! That works perfectly. Many many thanks Roz ________________________________ From: word-bounces at dcomp.com [mailto:word-bounces at dcomp.com] On Behalf Of Pieter Janssens Sent: 25 July 2008 15:55 To: DailyWordTips Subject: Re: [Word] Programatically opening Word docs from Access hi Rosalyn, this little piece of code might help: Dim wrdapp As Word.Application Dim wrddoc As Word.Document Set wrdapp = CreateObject("word.application") wrdapp.WordBasic.fileopen Name:=sFullPath, passworddoc:=strPassword Set wrddoc = wrdapp.ActiveDocument Debug.Print wrddoc.Name, wrddoc.ReadOnly wrdapp.Quit Set wrdapp = Nothing note the named parameter is passworddoc, not password. in my test from excel 2002 i could not get excel to assign the wrddoc object directly from the fileopen statement however, an extra step was needed using the activedocument reference. greetings, pieter. 2008/7/25 <rosalyn.clarke at barclays.com>: 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. _______________________________________________ Word mailing list Word at dcomp.com http://lists.dcomp.com/mailman/listinfo/word 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.