How to: Populate Word Tables with Document Properties
Applies to |
---|
The information in this topic applies only to the specified Visual Studio Tools for Office projects and versions of Microsoft Office. Project type
Microsoft Office version
For more information, see Features Available by Application and Project Type. |
The following example creates a Microsoft Office Word table at the top of the document and populates it with the properties of the host document.
Populating Tables in a Document-Level Customization
To create a table and populate it with document properties
Set the range to the top of the document.
Dim rng As Word.Range = Me.Range(Start:=0, End:=0)
object start = 0, end = 0; Word.Range rng = this.Range(ref start, ref end);
Insert a title for the table and include paragraph marks.
With rng .InsertBefore("Document Statistics") .Font.Name = "Verdana" .Font.Size = 16 .InsertParagraphAfter() .InsertParagraphAfter() .SetRange(rng.End, rng.End) End With
rng.InsertBefore("Document Statistics"); rng.Font.Name = "Verdana"; rng.Font.Size = 16; rng.InsertParagraphAfter(); rng.InsertParagraphAfter(); rng.SetRange(rng.End, rng.End);
Add the table to the document at the range.
rng.Tables.Add(Range:=Me.Paragraphs.Item(2).Range, NumRows:=3, NumColumns:=2)
rng.Tables.Add(this.Paragraphs[2].Range, 3, 2, ref missing, ref missing);
Format the table and apply a style.
With Me.Tables.Item(1) .Range.Font.Size = 12 .Columns.DistributeWidth() .Style = "Table Professional" End With
Word.Table tbl = this.Tables[1]; tbl.Range.Font.Size = 12; tbl.Columns.DistributeWidth(); object styleName = "Table Professional"; tbl.set_Style(ref styleName);
Insert the document properties into cells.
With Me.Tables.Item(1) .Cell(1, 1).Range.Text = "Document Property" .Cell(1, 2).Range.Text = "Value" .Cell(2, 1).Range.Text = "Subject" .Cell(2, 2).Range.Text = CType(Me.BuiltInDocumentProperties, Office.DocumentProperties) _ (Word.WdBuiltInProperty.wdPropertySubject).Value.ToString() .Cell(3, 1).Range.Text = "Author" .Cell(3, 2).Range.Text = CType(Me.BuiltInDocumentProperties, Office.DocumentProperties) _ (Word.WdBuiltInProperty.wdPropertyAuthor).Value.ToString() End With
tbl.Cell(1, 1).Range.Text = "Document Property"; tbl.Cell(1, 2).Range.Text = "Value"; tbl.Cell(2, 1).Range.Text = "Subject"; tbl.Cell(2, 2).Range.Text =((Office.DocumentProperties)(this.BuiltInDocumentProperties)) [Word.WdBuiltInProperty.wdPropertySubject].Value.ToString(); tbl.Cell(3, 1).Range.Text = "Author"; tbl.Cell(3, 2).Range.Text = ((Office.DocumentProperties)(this.BuiltInDocumentProperties)) [Word.WdBuiltInProperty.wdPropertyAuthor].Value.ToString();
The following example shows the complete procedure. To use this code, run it from the ThisDocument class in your project.
Private Sub CreateDocumentPropertyTable()
Dim rng As Word.Range = Me.Range(Start:=0, End:=0)
' Insert a title for the table and paragraph marks.
With rng
.InsertBefore("Document Statistics")
.Font.Name = "Verdana"
.Font.Size = 16
.InsertParagraphAfter()
.InsertParagraphAfter()
.SetRange(rng.End, rng.End)
End With
' Add the table.
rng.Tables.Add(Range:=Me.Paragraphs.Item(2).Range, NumRows:=3, NumColumns:=2)
' Format the table and apply a style.
With Me.Tables.Item(1)
.Range.Font.Size = 12
.Columns.DistributeWidth()
.Style = "Table Professional"
End With
' Insert document properties into cells.
With Me.Tables.Item(1)
.Cell(1, 1).Range.Text = "Document Property"
.Cell(1, 2).Range.Text = "Value"
.Cell(2, 1).Range.Text = "Subject"
.Cell(2, 2).Range.Text = CType(Me.BuiltInDocumentProperties, Office.DocumentProperties) _
(Word.WdBuiltInProperty.wdPropertySubject).Value.ToString()
.Cell(3, 1).Range.Text = "Author"
.Cell(3, 2).Range.Text = CType(Me.BuiltInDocumentProperties, Office.DocumentProperties) _
(Word.WdBuiltInProperty.wdPropertyAuthor).Value.ToString()
End With
End Sub
private void CreateDocumentPropertyTable()
{
object start = 0, end = 0;
Word.Range rng = this.Range(ref start, ref end);
// Insert a title for the table and paragraph marks.
rng.InsertBefore("Document Statistics");
rng.Font.Name = "Verdana";
rng.Font.Size = 16;
rng.InsertParagraphAfter();
rng.InsertParagraphAfter();
rng.SetRange(rng.End, rng.End);
// Add the table.
rng.Tables.Add(this.Paragraphs[2].Range, 3, 2, ref missing, ref missing);
// Format the table and apply a style.
Word.Table tbl = this.Tables[1];
tbl.Range.Font.Size = 12;
tbl.Columns.DistributeWidth();
object styleName = "Table Professional";
tbl.set_Style(ref styleName);
// Insert document properties into cells.
tbl.Cell(1, 1).Range.Text = "Document Property";
tbl.Cell(1, 2).Range.Text = "Value";
tbl.Cell(2, 1).Range.Text = "Subject";
tbl.Cell(2, 2).Range.Text =((Office.DocumentProperties)(this.BuiltInDocumentProperties))
[Word.WdBuiltInProperty.wdPropertySubject].Value.ToString();
tbl.Cell(3, 1).Range.Text = "Author";
tbl.Cell(3, 2).Range.Text = ((Office.DocumentProperties)(this.BuiltInDocumentProperties))
[Word.WdBuiltInProperty.wdPropertyAuthor].Value.ToString();
}
Populating Tables in an Application-Level Add-In
To create a table and populate it with document properties
Set the range to the top of the document.
Dim rng As Word.Range = Me.Application.ActiveDocument.Range( _ Start:=0, End:=0)
object start = 0, end = 0; Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Range(ref start, ref end);
Insert a title for the table and include paragraph marks.
With rng .InsertBefore("Document Statistics") .Font.Name = "Verdana" .Font.Size = 16 .InsertParagraphAfter() .InsertParagraphAfter() .SetRange(rng.End, rng.End) End With
rng.InsertBefore("Document Statistics"); rng.Font.Name = "Verdana"; rng.Font.Size = 16; rng.InsertParagraphAfter(); rng.InsertParagraphAfter(); rng.SetRange(rng.End, rng.End);
Add the table to the document at the range.
rng.Tables.Add(Range:=Me.Application.ActiveDocument.Paragraphs.Item(2).Range, _ NumRows:=3, NumColumns:=2)
rng.Tables.Add(document.Paragraphs[2].Range, 3, 2, ref missing, ref missing);
Format the table and apply a style.
With Me.Application.ActiveDocument.Tables.Item(1) .Range.Font.Size = 12 .Columns.DistributeWidth() .Style = "Table Professional" End With
Word.Table tbl = document.Tables[1]; tbl.Range.Font.Size = 12; tbl.Columns.DistributeWidth(); object styleName = "Table Professional"; tbl.set_Style(ref styleName);
Insert the document properties into cells.
With Me.Application.ActiveDocument.Tables.Item(1) .Cell(1, 1).Range.Text = "Document Property" .Cell(1, 2).Range.Text = "Value" .Cell(2, 1).Range.Text = "Subject" .Cell(2, 2).Range.Text = CType( _ Me.Application.ActiveDocument.BuiltInDocumentProperties, _ Office.DocumentProperties) _ (Word.WdBuiltInProperty.wdPropertySubject).Value.ToString() .Cell(3, 1).Range.Text = "Author" .Cell(3, 2).Range.Text = CType( _ Me.Application.ActiveDocument.BuiltInDocumentProperties, _ Office.DocumentProperties) _ (Word.WdBuiltInProperty.wdPropertyAuthor).Value.ToString() End With
tbl.Cell(1, 1).Range.Text = "Document Property"; tbl.Cell(1, 2).Range.Text = "Value"; tbl.Cell(2, 1).Range.Text = "Subject"; tbl.Cell(2, 2).Range.Text = ((Office.DocumentProperties)(document.BuiltInDocumentProperties)) [Word.WdBuiltInProperty.wdPropertySubject].Value.ToString(); tbl.Cell(3, 1).Range.Text = "Author"; tbl.Cell(3, 2).Range.Text = ((Office.DocumentProperties)(document.BuiltInDocumentProperties)) [Word.WdBuiltInProperty.wdPropertyAuthor].Value.ToString();
The following example shows the complete procedure. To use this code, run it from the ThisAddIn class in your project.
Private Sub CreateDocumentPropertyTable()
Dim rng As Word.Range = Me.Application.ActiveDocument.Range( _
Start:=0, End:=0)
' Insert a title for the table and paragraph marks.
With rng
.InsertBefore("Document Statistics")
.Font.Name = "Verdana"
.Font.Size = 16
.InsertParagraphAfter()
.InsertParagraphAfter()
.SetRange(rng.End, rng.End)
End With
' Add the table.
rng.Tables.Add(Range:=Me.Application.ActiveDocument.Paragraphs.Item(2).Range, _
NumRows:=3, NumColumns:=2)
' Format the table and apply a style.
With Me.Application.ActiveDocument.Tables.Item(1)
.Range.Font.Size = 12
.Columns.DistributeWidth()
.Style = "Table Professional"
End With
' Insert document properties into cells.
With Me.Application.ActiveDocument.Tables.Item(1)
.Cell(1, 1).Range.Text = "Document Property"
.Cell(1, 2).Range.Text = "Value"
.Cell(2, 1).Range.Text = "Subject"
.Cell(2, 2).Range.Text = CType( _
Me.Application.ActiveDocument.BuiltInDocumentProperties, _
Office.DocumentProperties) _
(Word.WdBuiltInProperty.wdPropertySubject).Value.ToString()
.Cell(3, 1).Range.Text = "Author"
.Cell(3, 2).Range.Text = CType( _
Me.Application.ActiveDocument.BuiltInDocumentProperties, _
Office.DocumentProperties) _
(Word.WdBuiltInProperty.wdPropertyAuthor).Value.ToString()
End With
End Sub
private void CreateDocumentPropertyTable()
{
object start = 0, end = 0;
Word.Document document = this.Application.ActiveDocument;
Word.Range rng = document.Range(ref start, ref end);
// Insert a title for the table and paragraph marks.
rng.InsertBefore("Document Statistics");
rng.Font.Name = "Verdana";
rng.Font.Size = 16;
rng.InsertParagraphAfter();
rng.InsertParagraphAfter();
rng.SetRange(rng.End, rng.End);
// Add the table.
rng.Tables.Add(document.Paragraphs[2].Range, 3, 2, ref missing, ref missing);
// Format the table and apply a style.
Word.Table tbl = document.Tables[1];
tbl.Range.Font.Size = 12;
tbl.Columns.DistributeWidth();
object styleName = "Table Professional";
tbl.set_Style(ref styleName);
// Insert document properties into cells.
tbl.Cell(1, 1).Range.Text = "Document Property";
tbl.Cell(1, 2).Range.Text = "Value";
tbl.Cell(2, 1).Range.Text = "Subject";
tbl.Cell(2, 2).Range.Text = ((Office.DocumentProperties)(document.BuiltInDocumentProperties))
[Word.WdBuiltInProperty.wdPropertySubject].Value.ToString();
tbl.Cell(3, 1).Range.Text = "Author";
tbl.Cell(3, 2).Range.Text = ((Office.DocumentProperties)(document.BuiltInDocumentProperties))
[Word.WdBuiltInProperty.wdPropertyAuthor].Value.ToString();
}
See Also
Tasks
How to: Add Text and Formatting to Cells in Word Tables
How to: Add Rows and Columns to Word Tables
Concepts
The Variable missing and Optional Parameters in Office Solutions