Class Subdocument (Word VBA)

The class Subdocument represents a subdocument within a document or range. The Subdocument object is a member of the Subdocuments collection. The Subdocuments collection includes all the subdocuments in the a range or document.

To use a Subdocument class variable it first needs to be instantiated, for example

Dim sbd as Subdocument
Set sbd = ActiveDocument.Subdocuments(Index:=1)

The following procedures can be used to set variables of type Subdocument: Subdocuments.AddFromFile, Subdocuments.AddFromRange and Subdocuments.Item.

For Each

Here is an example of processing the Subdocument items in a collection.

Dim subdoc As Subdocument 
For Each subdoc In ActiveDocument.Subdocuments 
 If subdoc.HasFile = True Then 
 MsgBox subdoc.Path & Application.PathSeparator  & subdoc.Name 
 MsgBox "This subdocument has not been saved." 
 End If 
Next subdoc


Deletes the specified subdocument.



True if the specified subdocument has been saved to a file.

Dim subLoop As Subdocument 
For Each subLoop In ActiveDocument.Subdocuments 
 If subLoop.HasFile = True Then 
 MsgBox subLoop.Path & Application.PathSeparator _ 
 & subLoop.Name 
 MsgBox "This subdocument has not been saved." 
 End If 
Next subLoop


Returns the heading level used to create the subdocument.

i = 1 
If ActiveDocument.Subdocuments.Count > = 1 Then 
 For each s in ActiveDocument.Subdocuments 
 MsgBox "The heading level for SubDoc " & i _ 
 & " is " & s.Level 
 i = i + 1 
 Next s 
 MsgBox "There are no subdocuments defined." 
End If


True if a subdocument in a master document is locked.

If ActiveDocument.Subdocuments(1).Locked = True Then 
 ActiveDocument.Protect Type:=wdAllowOnlyComments 
End If


Returns the name of the specified object.

Dim strName As String
strName = ActiveDocument.Subdocuments(1).Name


Opens the specified subdocument. Returns a Document object that represents the opened subdocument.

Dim doc As Document
Set doc = ActiveDocument.Subdocuments(1).Open()


Returns the disk or Web path to the specified subdocument.

The path doesn't include a trailing character — for example, "C:\MSOffice" or "https://MyServer". Use the PathSeparator property to add the character that separates folders and drive letters. Use the Name property to return the file name without the path.

Dim strPath As String
strPath = ActiveDocument.Subdocuments(1).Path


Returns a Range object that represents the portion of a document that's contained within the subdocument.

For information about returning a range from a document, see the Range method.

Dim rngRange As Range
Set rngRange = ActiveDocument.Subdocuments(1).Range


Divides an existing subdocument into two subdocuments at the same level in master document view or outline view.

The division is at the beginning of the specified range. An error occurs if the document isn't in either master document or outline view or if the range isn't at the beginning of a paragraph in a subdocument.

Split (Range)

Range: The range that, when the subdocument is split, becomes a separate subdocument.

Selection.Range.Subdocuments(1).Split Range:=Selection.Range