I am looking for a way to capture data from a formatted word document users are currently using. Rather than create a list where the users input the information and it generates the document in the document library is there a way to reverse the process? Where a user uploads the document already filled out and the system "pulls" the information into a list? This would help with retrieving historical data.
I'm not sure how it would work with a word document, but maybe you can look into using Microsoft Infopath forms? The forms use XML data which can be promoted into list columns. So users can fill out the published infopath template, and the resulting data can populated into the form library.
- Create a document library.
- Add fields you want.
- Create a new Word document from the "New" button in the ribbon.
- Design in it the form as you wish.
- Place QuickPart (from the "Insert" ribbon of Word) to place doc lib fields wherever you want.
- Save the document back to the SharePoint document library.
- Download the file locally.
- Go to the doc lib settings, Advanced Settings: allow management of content types.
- Go to the doc lib settings, click on the "Document" content type from the new Content Types section.
- Go to its advanced settings and upload the file from step #7 as a new template for the content type.
- Now, whenever a user creates a new document from the "New" button of the ribbon in the doc lib, Word will open on the Template you prepared. The user can edit the QuickPart and save the document to SharePoint. When it's saved, proprerties will be promoted to actual doc lib's columns.
A good tutorial about this approach (with slight differences with my procedure above) can be found here.
I would try to write an event receiver on ItemAdded and ItemUpdated to read out the contents of your documents and write the details into the fields.