Skip to main content

Connecting SharePoint Library columns to MS Word Quick Parts

By making use of MS Word feature Quick Parts along with SharePoint Document Library columns, we can bring document metadata to the document as placeholders. In this blog post, I will cover the following:
  • Connecting quick parts to library columns
  • Limitations which should be kept in mind before deciding on using this feature
In this example, I've used SharePoint 2013 and MS Word 2013. However, this should work for SharePoint 2010 and MS Word 2010 as well.

Connecting MS Word Quick Parts to Document Library columns
I've a document library and added a column Description of type Multi-line of text. Now go to Library Settings -> Advanced Settings, under Document Template, click on Edit Template link.
Edit Template
It opens MS Word. Once the document is open, under Insert tab, look for Quick Parts as shown below:
Insert Quick Parts
Click on this, and select Document Property and here you can see lots of fields. If you observe, you can also find Title and Description fields which are coming from document library.
Library columns in Quick Parts
Now, you can insert these fields to the document. I've also typed my own texts as well as Header as shown below:
Quick Parts in Document
Now, save this document back to the same location which was shown under Template URL. Note that this will be saved in .dotx format (Document Template).

Now the fun begins.

Navigate to Library, click on New Document, it opens the document from the template it was saved in previous step. Just save this document without making any changes.

Now in the library you can see this item. Edit the property and add some text to Title and Description columns so that it looks something like below:
Document View with metadata
Now just click on Document (in this example "First Document"). The document opens and alas! you can see the metadata values appearing in the document.
Metadata values in document
If you make changes to the property values and again open the document, it reflects the new values. If you download the document, it retains the values as at the time of download.

Is it not a cool feature? Ok, before you jump into implementing this in your solutions, be aware of certain limitations and features so that you are consciously taking design decision.

Limitations/Features:

  • The following data types do not appear under Quick Parts (I did not check with BCS data type):
    • Hyperlink
    • Calculated Column
    • Task Outcome
  • Created By column appears as "Author"
  • Last Modied By, Last Modified colums do not appear
  • At a later stage, if template is updated with additional columns and/or text, these will not automatically reflect for existing documents
Try this feature and let me know how you find this!

Comments

  1. Hi, what have I done wrong when the columns i created in the document library does not appear as quickparts?

    ReplyDelete
    Replies
    1. Which version of Office you are using? What are the data types of these columns?

      Delete
    2. Document template (.dotx) must be saved before ... then you will see new columns under Quick Parts.

      Delete
    3. My problem is, instead, the absence of connection between the columns of document library and the QP mapped on the new document .... and vice-versa.
      Do you have any idea why this happens, Suresh? (my name is Paolo, i'm writing from Italy)

      Delete
    4. Hi Paolo, can you confirm if you are not getting the quick parts in dotx file? That is, you have to insert the quick parts in template and not in actual document. If it is possible, can you share screenshot of what you have tried?

      Delete
    5. Hi Suresh. I can insert quick parts in dotx file but only when i edit the template file and save it in \forms\template.dotx. If i try to get quick parts directly in "edit template" from library advanced options ... i can't ... Document properties aren't populated by specific library columns. Well, after i have completed the structure of my template (and save it) with the insertion of one column from quick parts (name=cheese and the placeholder is visible), i create a new element that is correctly added to library. but the value of field inserted as quick part isn't written in the library column. If i modify the element using "modify properties" value is transposed in the library ....

      Delete
    6. Sorry, i am not getting your explanation. Without screenshots its difficult to understand.

      Delete

Post a Comment

Popular posts from this blog

All about SharePoint List View Styles

Sometimes, there are out of the box features which we tend to ignore and later when we do apply, we are more than happy about the feature which is readily available in SharePoint. One such feature is List View Style. I never thought I would write a post on this. However, whenever I spoke about this with users, people were excited to see the result. That prompted me to write this post.

Instead of getting into only theory part, I will basically take use cases where these styles can be applied and also touch up on on some minor limitations with certain style.

When you are creating/modifying a List view, you will get an option to select View Style. As shown below, there are 8 options available and Default is always set if you ignore this style.


I will take typical Contact List and Announcement List to explian about these styles. Let us go one by one.

Default:
This view, as name suggest, is the default style in a view. This is one of the widely seen style in SharePoint site. This is how it…

How to update Person field with multiple values using REST API

Person or Group field in SharePoint is similar to a Lookup field. When you are updating this field using REST API, you need to append "Id" to the name of the column in the body construct. For example, the body construct looks like this:

data: { "__metadata": { "type": "SP.Data.ListNameListItem" }, "Title": "First Item", "PeopleFieldId": "4" };

The highlighted portions should be replaced by the actual List Name and Column Name. In the above example, the REST call is updating a List item with Title and People columns.

How to get the value for user ID ("4" in the above example) needs a separate explanation and that will be my next post!

The above example works fine if Person field is configured to accept only one value. If we change the Person field to accept multiple values, how do we pass more than one value in the REST call? Since we normally separate user names with semicolon in people picker, I…

How to set character limit for Multiple Lines of Text column in List

Setting a character limit for Multiple lines of text column in a List is not straight forward. Depending upon the setting of the column, the solution varies.

Plain Text:
When you create Multiple lines of text column with "Plain Text", SharePoint renders this field as "TextArea" HTML element. You can set the character limit by making use of maxlength attribute of TextArea element.

$( document ).ready(function(){

    $("textarea[id*=FieldName]").attr('maxlength','1000');

});

The above script should be injected into NewForm.aspx and EditForm.aspx of SharePoint List. Of course, replace "FieldName" with your field name.

Enhanced Rich Text:
When you create Multiple lines of text column with Enhanced Rich Text, SharePoint renders this field as DIV with contenteditable attribute set. This is where it gets more tricky. If you closely observe, the IDs of the contenteditable DIV and the corresponding Label DIV are somewhat similar.

For this DIV,…