Критерии для полей текстового типа требуют разделителей. Возможные варианты - апостроф или двойные кавычки. Я предпочитаю апостроф, так как его легче читать. В поле даты / времени потребуется разделитель #.
& " WHERE [P086 - Supplier Open Order Report].Supplier = '" & Maillist!Supplier & "'" _
Не нужны все эти скобки, не нужно объединять пустую строку, не нужно .Fields
- альтернативный синтаксис для ссылочного поля.
Для получения дополнительной информации просмотрите INSERT INTO - ошибки, но позволяет ввод в таблицу
Что касается данных, которые отправляются, они только компилируются однажды вне набора записей Maillist l oop. Код logi c неверен. Измените процедуру для компиляции данных для каждой записи Maillist в пределах ее l oop. Кроме того, действительно нужно создать объект приложения Outlook только один раз, поэтому сделайте это и закройте его вне циклов. Объект электронной почты отличается.
Set olApp = Outlook.Application
Set Maillist = db.OpenRecordset("P086 - Email OOR")
Do Until Maillist.EOF
sqlmsg = ...
rs.Open sqlmsg, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
...
Do While Not rs.EOF
...
Loop
rs.Close
...
Loop
Удалите второй Set Maillist = db.OpenRecordset("P086 - Email OOR")
.