Dosyanızı inceleyemedim ama yazdığınız koda bakınca şu hatayı gördüm:
SQL komutları metin tabanlıdır
Vba kodlarında metinsel veriler çift tırnak içine alınır eğer kullandığınız ifadede de çift tırnak varsa ifadeyi tekrar çift tırnak içine alırken ifadede kullandığınız çift tırnaklar ya tek tırnağa çevrilir yada çift çift tırnağa çevrilir
Örneğin yukardaki kodda dmax içinde 4 adet çift tırnak kullanılmış dolayısıyla ifade aşağıda şekilde yazılmalı
DoCmd.RunSQL "INSERT INTO egitimler_kisiler ( kisi_id, egitim_id ) SELECT kisiler.kisi_id, egitimler.egitim_id FROM kisiler INNER JOIN egitimler ON kisiler.departman = egitimler.departman WHERE (((kisiler.kisi_id) = DMax((
'[kisi_id]
',
'[kisiler]
')))
;"
Yada
DoCmd.RunSQL "INSERT INTO egitimler_kisiler ( kisi_id, egitim_id ) SELECT kisiler.kisi_id, egitimler.egitim_id FROM kisiler INNER JOIN egitimler ON kisiler.departman = egitimler.departman WHERE (((kisiler.kisi_id) = DMax(
(""[kisi_id
]"", ""[kisiler]
"")));"
Bir de tabletten incelediğim için emin olamadım ama acılan kadar kapatılmalı parantezler