Tag the controls in the userform to match the names of the bookmarks in the source documents:
Private Sub CommandButton1_Click()
Dim varBMArray() As Variant, lngIndex As Integer
Dim oDlg As FileDialog, Bcnt As Integer, WdStart As Boolean
Dim oDocSource As Document
Dim oCtrl
Set oDlg = Application.FileDialog(msoFileDialogFilePicker)
With oDlg
.Title = ("Select File and Click OK")
.AllowMultiSelect = False
.Filters.Add "Word Files", "*.doc; *.docx; *.docm; *.dotx;*.dot", 1
If .Show = 0 Then
MsgBox ("No file was selected.")
Exit Sub
End If
End With
Set oDocSource = Documents.Open(oDlg.SelectedItems(1), , , , , , , , , , , False)
If oDocSource.Bookmarks.Count > 0 Then
ReDim varBMArray(oDocSource.Bookmarks.Count - 1, 1)
For lngIndex = 0 To oDocSource.Bookmarks.Count - 1
varBMArray(lngIndex, 0) = oDocSource.Bookmarks(lngIndex + 1).Name
varBMArray(lngIndex, 1) = oDocSource.Bookmarks(lngIndex + 1).Range.Text
Next lngIndex
Else
MsgBox "No bookmarks"
End If
oDocSource.Close wdDoNotSaveChanges
For lngIndex = 0 To UBound(varBMArray)
For Each oCtrl In Me.Controls
If oCtrl.Tag = varBMArray(lngIndex, 0) Then
oCtrl.Value = varBMArray(lngIndex, 1)
Exit For
End If
Next oCtrl
Next lngIndex
lbl_Exit:
Exit Sub
End Sub