с chr (34) вместо кавычки ("), это может быть проще,
У меня есть пример с 3 строковыми аргументами:
.OnAction = "'" & ThisWorkbook.Name & "'!'Importer_Items_Temp_par_Menu_Déroulant " & Chr(34) & Nom_Fichier & Chr(34) & " , " & Chr(34) & Old_Val & Chr(34) & " , " & Chr(34) & ThisWorkbook.Sheets("Import_Objets").Cells(Item_Num, q * 2).Value & Chr(34) & "'"
.
Где Importer_Items_Temp_par_Menu_Déroulant - это макрос,
Nom_Fichier - строковая переменная,
Old_Val тоже,
ThisWorkbook.Sheets ("Import_Objets"). Ячейки (Item_Num, q * 2). Значение также является строкой из ячейки листа.