Welcome to the forum!
I assume that you have a table that holds a list of all possible tasks, some of those are your 30 common tasks. I'll assume you have a query that can pull those 30 common tasks. What you basically need to do is to create a recordset that has the tasks and loop through them. Everytime through that loop you would run an append query that appends a new record to the table that holds the tasks for a project (in the example below the table is tblProjectTasks). You would have to pull the project's primary key value from the form where the button is located. The code would look something like this (air code, not tested).
Code:
Dim cnn1 As ADODB.Connection
Set cnn1 = CurrentProject.Connection
'set up the recordset for the tasks
Dim myRSTask As New ADODB.Recordset
myRSTask.ActiveConnection = cnn1
'set up the record set for the project-task table
Dim myRSProjTask as New ADODB.Recordset
myRSProjTask.ActiveConnection=cnn1
'open the project-task recordset
myRSProjTask.Open "tblProjectTasks", , adOpenDynamic, adLockOptimistic
'open the task record set
myRSTask.Open "qryCommonTasks", , adOpenDynamic, adLockOptimistic
Do until myRSTask.EOF
With myRSProjTask
.AddNew
!fkProjectID=me.projectID 'pulls project key from form where the button is located
!fkTaskID= myRSTask!taskID 'pull current task from task recordset
.Update
End With
myRSTask.MoveNext
Loop
myRSTask.close
myRSProjTask.close
Set myRSTask=Nothing
Set myRSProjTask=Nothing
I'm not sure what your table structure looks like, but I'm guessing something like this
tblProjects
-pkProjectID primary key, autonumber
-txtProjectName
-fkClientID foreign key to tblClients
tblTasks
-pkTaskID primary key, autonumber
-txtTaskName
-logCommonTask (yes/no field if yes, it is a common task)
tblProjectTasks
-pkProjTaskID primary key, autonumber
-fkProjectID foreign key to tblProjects
-fkTaskID foreign key to tblTasks