I was surprised that this question did not get answered right away. The code was not very complicated - knowing the Access tricks and syntax was the main problem. I eventually figured out how to do it myself. One hangup was that the DAO reference needed to be before the ADO reference. Another tricky thing was getting the records sorted by Division and TeamName. The third trick was to write the new records without interfering with the existing ones. Here is the code that I came up with. Any comments or criticisms are appreciated.
Sub tst()
Dim db As Database, rs As Recordset, newrs As Recordset
Dim ndiv As Long, nteam As Long, numReqd As Long
Dim currDiv As String, tableName As String
tableName = "Office_Address_List"
Set db = DBEngine.Workspaces(0).Databases(0)
' open table sorted by Division then TeamName
Set rs = db.OpenRecordset("SELECT * FROM Office_Address_List order by Division, TeamName")
ndiv = 0
nteam = 0
currDiv = ""
' we will output the new records to newrs, which starts off as the same set of records as rs
Set newrs = db.OpenRecordset(tableName, dbOpenTable)
'examine each record in the table
Do Until rs.EOF
If rs![Division] <> currDiv Then
currDiv = rs![Division]
'prompt for how many dups reqd
numReqd = InputBox("Enter number of extra labels per team for Division " & currDiv, , "0")
Debug.Print "new Division" & rs![Division]
ndiv = ndiv + 1
End If
nteam = nteam + 1
' make as many duplicates of the cuirrent record as required
For i = 1 To numReqd
newrs.AddNew
newrs.Fields("Division") = rs![Division]
newrs.Fields("TeamName") = rs![TeamName]
newrs.Update
Next i
rs.MoveNext
Loop
Debug.Print "Divs found " & ndiv;
Debug.Print "Teams found " & nteam;
newrs.Close
Set newrs = Nothing
rs.Close
Set rs = Nothing
db.Close
End Sub