The alternative, I've found, is to use only legacy form fields instead of content controls, and to apply the "Filling in forms" type of restriction. Each menu dropdown needs to have the "exit macro" item in the Properties dialog set to run a macro like the following. It assumes that the "bookmark name" of each menu dropdown is "Menu" followed by a unique number or other text, and below the menu dropdown there is a bookmark whose name is "BB" followed by the same number or text. These items, along with the building blocks that contain the tables, must be saved in a macro-enabled template (*.dotm), and with the restriction turned on in the template.
Instructions for installing macro code in your template may be found at https://www.gmayor.com/installing_macro.htm .
Option Explicit
Sub InsertBuildingBlock()
Dim MenuName As String
Dim BkMkName As String
Dim rgBB As Range
Dim testbb As BuildingBlock
With ActiveDocument
MenuName = Selection.Bookmarks(1).Name
BkMkName = Replace(MenuName, "Menu", "BB")
.Unprotect
' trigger an error if the named building block
' doesn't exist
On Error GoTo badBB
Set testbb = .AttachedTemplate.BuildingBlockEntries(.FormFields(MenuName).Result)
On Error GoTo Reprotect
Set rgBB = .Bookmarks(BkMkName).Range
If rgBB.Tables.Count > 0 Then
' if there is already a table in the bookmark,
' delete it and re-add the bookmark; otherwise
' the new table would be added after the existing one
rgBB.Tables(1).Delete
.Bookmarks.Add Name:=BkMkName, Range:=rgBB
End If
Set rgBB = testbb.Insert(Where:=rgBB, RichText:=True)
.Bookmarks.Add Name:=BkMkName, Range:=rgBB
End With
Reprotect:
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
Exit Sub
badBB:
MsgBox "Building block '" & ActiveDocument.FormFields(MenuName).Result & _
"' does not exist in this template."
GoTo Reprotect
End Sub
The lines in the code that start with an apostrophe are comments, which explain what happens as the statements after them will do.
This macro is not perfect. For example, if existing tables contain form fields, sometimes the code won't allow the cursor to move from the menu to those other fields. If this is a problem you see when you adapt the solution to your own template, send a copy of your template to me at the address shown in https://jay-freedman.info/contact/contact.htm and I'll try to make it work.