Bob Heygood
bheygood at abestsystems.com
Sat Jun 11 10:28:36 CDT 2005
thanks for your response Marty.
I started out this time to use custom properties, but am backing away
because I can't see how to keep the info the user types in at my prompt in
the custom property.
think I'll go back to just a simple bookmark, though that is a hassle as it
is hard to capture particular info once in a cell of a Word table.
bob
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of MartyConnelly
Sent: Friday, June 10, 2005 9:17 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Scrape Word Part II
As to custom properties you could use the dsofiles.dll, it works for any
ole type file
mdb,doc,xls,ppt or whatever visio uses, this also works from vb.net,
doesn't require word be installed.
There is also code to search for text which might be modified for
bookmarks but
there are two types of word bookmarks.
http://www.word.mvps.org/faqs/macrosvba/WorkWithBookmarks.htm
You could try searching this site especially the links to other word
mvp's like cindy meister
I think you will have to poke around to find all the bits and pieces
http://word.mvps.org
or the main site
http://www.mvps.org
'See MSKB and Dsofile.exe Lets You Edit Office Document Properties from
Visual Basic and ASP
'Microsoft Knowledge Base Article - 224351
'and download dsofile.exe
'http://support.microsoft.com/?kbid=224351
'Add a reference (Tools | References in the VBE window) to it.
' depending on path where you have installed dsofile.dll
'Put the following in a new module and you should be OK
'Dsofile.dll lets you edit Office document properties without
'Office in Visual Basic .NET 2003 and in Visual Basic .NET 2002
'http://support.microsoft.com/?id=224351
'===========================================================
'http://www.word.mvps.org/faqs/macrosvba/WorkWithBookmarks.htm
Private oFilePropReader As DSOleFile.PropertyReader
Private oDocProp As DSOleFile.DocumentProperties
Public Sub GetPropsFromDirectory()
'this routine gets all doc files in a directory and shows Line Count and
author
Dim ffile As String
On Error Resume Next
'careful with above line
'this is Quick and Dirty used to avoid missing propereties on some filetypes
' this can be used with microsoft, doc, ppt, xls and mdb files
ffile = Dir("c:\wordvba\*.doc")
Do While ffile <> "" 'recursive search for sub directories can be
written
If ffile <> "." And ffile <> ".." Then
Set oFilePropReader = New DSOleFile.PropertyReader
Set oDocProp = _
oFilePropReader.GetDocumentProperties("c:\wordvba\" & ffile)
MsgBox oDocProp.Name & " " & oDocProp.PageCount & _
" pages " & oDocProp.Author
With oDocProp
Debug.Print "Name " & .Name
Debug.Print "Application Name " & .AppName
Debug.Print "Author " & .Author
Debug.Print "Category " & .Category
Debug.Print "Class Id " & .CLSID
Debug.Print "Comments " & .Comments
Debug.Print "Company " & .Company
'Debug.Print "Custom " & .CustomProperties 'check index values
Debug.Print "Create date " & .DateCreated
Debug.Print "Last edited " & .DateLastEdited
Debug.Print "Last printed " & .DateLastPrinted
Debug.Print "Last saved " & .DateLastSaved
Debug.Print "Contains Macros " & .HasMacros 'doesn't work with
ppt files
'Debug.Print .Icon 'you can view thumbnail in picture object
Debug.Print "Read only " & .IsReadOnly
Debug.Print "Keywords " & .Keywords
Debug.Print "Last edited by " & .LastEditedBy
Debug.Print "Line Count " & .LineCount
Debug.Print "Location " & .Location
Debug.Print "Manager " & .Manager
Debug.Print "Page Count " & .PageCount
Debug.Print "Paragraphs "; .ParagraphCount
Debug.Print "Program Id " & .ProgId
Debug.Print "Revision No. " & .RevisionNumber
Debug.Print "Slides "; .SlideCount
Debug.Print "Subject " & .Subject
Debug.Print "Title " & .Title
Debug.Print "Version " & .Version
Debug.Print "WordCount " & .WordCount
Debug.Print "Char Cnt " & .CharacterCount
Debug.Print " "
End With
ffile = Dir()
Set oDocProp = Nothing
Set oFilePropReader = Nothing
End If
Loop
End Sub
Here is some quick and dirty code that opens a Word doc from inside Access,
searches for the string "special code:" and sets a string variable equal to
the sentence that follows the code string. If your documents all have the
same string you can find that string and select words, sentences or
paragraphs that come after it. from Jim Hale
Function LiftText()
Dim wd As Word.Application, strPhrase As String, strFindphrase As String
strFindphrase = "special code:"
Set wd = New Word.Application
wd.Documents.Open "C:\Test.doc"
wd.Visible = True
wd.Selection.Find.ClearFormatting
With wd.Selection.Find
.Text = strFindphrase
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wd.Selection.Find.Execute
wd.Selection.Start = wd.Selection.End
Call wd.Selection.EndOf(wdSentence, wdExtend)
strPhrase = wd.Selection
MsgBox "Look what I found: " & strPhrase
wd.ActiveDocument.Close
wd.Quit
Set wd = Nothing
End Function
Bob Heygood wrote:
>thanks Jim.
>I have looked before at Helen's code. Lots of great stuff there.
>
>bob
>
>
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Hale, Jim
>Sent: Wednesday, June 08, 2005 8:17 AM
>To: 'Access Developers discussion and problem solving'
>Subject: RE: [AccessD] Scrape Word Part II
>
>
>At the very bottom of this link Helen Feddema has some code that may help
>you.
>http://www.helenfeddema.com/CodeSamples.htm
>
>Jim Hale
>
>-----Original Message-----
>From: Bob Heygood [mailto:bheygood at abestsystems.com]
>Sent: Wednesday, June 08, 2005 8:35 AM
>To: Access Developers discussion and problem solving
>Subject: [AccessD] Scrape Word Part II
>
>
>Hello to the list,
>
>Well, my project is alive again. This time I have the luxury of being able
>to create the Word document from which I need to cull the info. I still
need
>to have a Word table but I can create bookmarks or whatever within the
table
>in the document.
>To recap I need to import 10 pieces of text from a Word document and store
>them in a mdb table.
>Jim Hale's code below worked really good except that we were pressed for
>time and did not ever get it to work in all areas of the Word doc.
>So my first question is how to search the Word doc to find the text,
>bookmarks, fields, custom properties or ????
>
>
>TIA,
>
>Bob Heygood
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Hale, Jim
>Sent: Monday, April 18, 2005 8:54 AM
>To: 'Access Developers discussion and problem solving'
>Subject: RE: [AccessD] Scrape Word
>
>
>Whatever it takes to get the job done! Sorry I couldn't be more help.
>Jim Hale
>
>-----Original Message-----
>From: Bob Heygood [mailto:bheygood at abestsystems.com]
>Sent: Monday, April 18, 2005 10:09 AM
>To: Access Developers discussion and problem solving
>Subject: RE: [AccessD] Scrape Word
>
>
>Thanks Jim
>I finally just ran the job as it took about 4 hours to process 256
>documents.
>it is a one time deal and the customer needed to have the results.
>
>your help was fantastic.
>
>bob
>
>
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Hale, Jim
>Sent: Friday, April 15, 2005 3:18 PM
>To: 'Access Developers discussion and problem solving'
>Subject: RE: [AccessD] Scrape Word
>
>
>I'll look at it some more on Monday. You might examine the selection object
>in the Word application. It has numerous properties and methods one or more
>of which should do the trick.
>Jim Hale
>
>-----Original Message-----
>From: Bob Heygood [mailto:bheygood at abestsystems.com]
>Sent: Friday, April 15, 2005 4:52 PM
>To: Access Developers discussion and problem solving
>Subject: RE: [AccessD] Scrape Word
>
>
>yes in a table cell.
>again your code is working super.
>but only grabs the first word, sometimes there is more than one word in the
>cell, and I would like to capture all of them.
>if you have thought, I would welcome it.
>
>
>again I tried to manipulate the code further but it acts very erratic when
>in a table cell.
>
>thanks for the great help.
>
>bob
>
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Hale, Jim
>Sent: Thursday, April 14, 2005 12:53 PM
>To: 'Access Developers discussion and problem solving'
>Subject: RE: [AccessD] Scrape Word
>
>
>So the data you want (including the search string) is in a table cell? In
>the code I sent you delete
> wd.Selection.Start = wd.Selection.End
> Call wd.Selection.EndOf(wdSentence, wdExtend)
>
>and replace with
> wd.Selection.Next(Unit:=wdWord, Count:=1).Select
>
>Or if the entire string is returned you can replace the search string with
>an empty string "" using the following function:
>
>Function ReplaceString(strTextIn As String, strFind As String, strReplace
As
>String, fCaseSensitive As Boolean) As String
>
> Dim strTmp As String
> Dim intPos As Integer
> Dim intCaseSensitive As Integer
>
> intCaseSensitive = IIf(fCaseSensitive, 2, 1)
>
> strTmp = strTextIn
> intPos = InStr(1, strTmp, strFind, intCaseSensitive)
>
> Do While intPos > 0
> strTmp = Left$(strTmp, intPos - 1) & strReplace & Mid$(strTmp, intPos +
>Len(strFind))
> intPos = InStr(intPos + Len(strReplace), strTmp, strFind,
>intCaseSensitive)
> Loop
>
> ReplaceString = strTmp
>
>End Function
>
>Jim Hale
>
>
>***********************************************************************
>The information transmitted is intended solely for the individual or
>entity to which it is addressed and may contain confidential and/or
>privileged material. Any review, retransmission, dissemination or
>other use of or taking action in reliance upon this information by
>persons or entities other than the intended recipient is prohibited.
>If you have received this email in error please contact the sender and
>delete the material from any computer. As a recipient of this email,
>you are responsible for screening its contents and the contents of any
>attachments for the presence of viruses. No liability is accepted for
>any damages caused by any virus transmitted by this email.
>
>
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>***********************************************************************
>The information transmitted is intended solely for the individual or
>entity to which it is addressed and may contain confidential and/or
>privileged material. Any review, retransmission, dissemination or
>other use of or taking action in reliance upon this information by
>persons or entities other than the intended recipient is prohibited.
>If you have received this email in error please contact the sender and
>delete the material from any computer. As a recipient of this email,
>you are responsible for screening its contents and the contents of any
>attachments for the presence of viruses. No liability is accepted for
>any damages caused by any virus transmitted by this email.
>
>
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>***********************************************************************
>The information transmitted is intended solely for the individual or
>entity to which it is addressed and may contain confidential and/or
>privileged material. Any review, retransmission, dissemination or
>other use of or taking action in reliance upon this information by
>persons or entities other than the intended recipient is prohibited.
>If you have received this email in error please contact the sender and
>delete the material from any computer. As a recipient of this email,
>you are responsible for screening its contents and the contents of any
>attachments for the presence of viruses. No liability is accepted for
>any damages caused by any virus transmitted by this email.
>
>
>
>
--
Marty Connelly
Victoria, B.C.
Canada
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com