Du musst sauber zwischen Form und Dokument trennen. Das eine hat mit dem anderen nichts zu tun.
Set doc = db.Createdocument()
doc.Form = "file.path.dialog"
Nach diesemScript hast Du ein neues Dokument in der Datenbank db, das ein Item mit dem Namen "Form" hat und dessen Inhalt "file.path.dialog" lautet. Nicht mehr und nicht weniger.
Deshalb kracht Dir Set Excel = doc.Getattachment("ExcelSheet.xls"), denn doc hat kein Attachment. Woher auch?
Hast Du die Exceldatei in die Form gehängt, um später darauf zuzugreifen? Dann baue eine Maske (Form) mit einem Richtextfeld, erzeuge mit dieser Maske ein Dokument und häng dort die Exceldatei rein. In Deinem späteren Ablauf greifst Du dann auf das Dokument zu, das Du mit der Maske erstellt hast und in dem Du die Exceldatei abgelegt hast.
Sicherlich kann man auch über eine Maske eine Exceldatei hinterlegen, aber dann musst Du auf das Gestaltungsdokument der Maske zugreifen (also auf die Form als Dokument), und nicht auf ein im Backend frisch erstelltes Dokument, dessen Form-Item zufällig den gleichen Namen hat, wie die Maske, die Du eigentlich haben möchtest. Dieser Weg ist aber eher ungewöhnlich. Was passiert, wenn sich die Exceldatei ändert? Dann muss die in der Form geändert werden, dazu benötigt man Designerrechte, ausgelagert in ein Dokument kommst Du mit Autorenrechten (bei entsprechender Autorensteuerung), auf jeden Fall aber mit Editorrechten zurecht. Es ist dann eine Datenänderung und keine Gestaltungsänderung.
Das ist sinngemäß das gleiche, wie ghostmw auch geschrieben hat, ich speichere es trotzdem, weil es mich schon ein paar Minuten gekostet hat ...