Domino 9 und frühere Versionen > ND8: Entwicklung
Excel VBA mehrere Dateien versenden
hexbsc:
Hallo zusammen,
ich bin neu hier in diesem Forum und hoffe, dass ich Hilfe bekomme.
Ich habe mir ein VBA Skript zusammengebastelt, womit ich in Excel E-Mails versenden kann. Dieses funktioniert auch schon soweit gut.
Ich kann einen Anhang, den ich soweit schon vordefiniert habe auch mit versenden. Dies bezieht sich allerdings auf ein Arbeitsblatt innerhalb des Dokuments.
Nun möchte ich aber gerne z.B. ein oder mehrere PDFs zusätzlich mit hinzufügen.
Hat jemand einen Ansatz für mich (für einen absoluten VBA Anfänger) mit dem man in Excel den Dialog zum "Anhang hinzufügen / Datei öffnen / etc." einbinden kann?
Vielen Dank im Voraus für euren Input.
Gruß,
hexbsc
Andrew Harder:
--- Zitat ---Hat jemand einen Ansatz für mich (für einen absoluten VBA Anfänger) mit dem man in Excel den Dialog zum "Anhang hinzufügen / Datei öffnen / etc." einbinden kann?
--- Ende Zitat ---
Ansatz? Gerne!
Das habe ich in der VBA Hilfe gefunden:
--- Code: ---fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If
--- Ende Code ---
Da Du ja schon das Excel Sheel in eine Mail eingebunden hast, kannst Du Dir damit ja was basteln.
hexbsc:
Hallo,
danke für deine Antwort.
Leider komme ich nicht weiter...
Ich habe folgenden Code verwendet, um das Excel-Sheet zu generieren (das funktioniert auch ;) )
--- Code: --- Sheets("test").Select ' Wechselt zu Tabellenblatt ...
Sheets("test").Copy ' Kopiert Tabellenblatt ...
ChDir "C:\temp" 'Speicherort der Arbeitsmappe
ActiveWorkbook.SaveAs filename:="C:\temp\test", _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
sAnhang = "C:\temp\test.xlsx" 'Muss natürlich richtig gesetzt werden
'Nun kommt der Teil von dir direkt darunter, falls korrekt...
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If
--- Ende Code ---
Wo wird denn nach der Auswahl der Datei der Anhang in die Notes Mail gepackt? Wir rufe ich das auf?
in meinem Code wird weiter unten nach Aufruf der Notesparameter
--- Code: ---Set session = CreateObject("notes.notessession")
user = session.UserName
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set db = session.getdatabase(server, mailfile)
Set doc = db.createdocument()
doc.Form = "Memo"
doc.SendTo = vAn ' an array
If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
doc.Subject = sBetrifft ' die Betreffzeile
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now
--- Ende Code ---
der Aufruf des Anhangs (also des Tabellenblatts) ausgeführt
--- Code: ---If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang) End If
--- Ende Code ---
Bei mir wird mit dem eingebauten Teil von dir der Code nicht mehr weiter ausgeführt (allerdings erscheint auch kein Fehler)
Ich hoffe, dass du mir weiterhelfen und mir sagen kannst, wie ich den zusätzlichen Anhang aufrufen kann.
Vielen Dank vorab für deine Unterstützung.
Gruß,
hexbsc
Andrew Harder:
--- Zitat ---Wo wird denn nach der Auswahl der Datei der Anhang in die Notes Mail gepackt? Wir rufe ich das auf?
--- Ende Zitat ---
Das ist ein Filechooser, das File wird ausgesucht und der Filepath des ausgesuchten Files wird in eine Variable geschrieben (String).
Den Anhang kannst Du dann genau so wie mit der Excel Sheet der Mail anhängen.
--- Code: ---If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang) End If
--- Ende Code ---
Mach doch einfach eine Sub/Funktion draus und übergib den Filepath, dann kannst Du das für jeden Anhang einfach aufrufen.
Dann musst Du nur diese Sub/Function nach dem Filechooser aufrufen, um das File anzuhängen.
Vorüberlegung dazu: Du kannst auch erst alle Filepaths/Filenamen in einem Array sammeln, am schluss ein ArrayUnique drüberlaufen lassen und dann das Array abarbeiten, um die Anhänge anzuhägen.
Vorteil: Die User können die Anhänge nur einmal anhängen. Reiner Erfahrungswert, es gibt User die kommen auf Ideen o_O
Ach ja zu dem code von gestern: Der ist für Textfiles, den musst Du natürlich noch auch PDF anpassen ;)
hexbsc:
Hallo Andy,
leider sind das noch sehr viele böhmische Dörfer für mich...
Kannst du mir vielleicht sagen, wie ich das dann gemeinsam mit dem Excelsheet in den Anhang der Mail packen lasse?
Ich habe die Variable fileToOpen als String deklariert, der Aufruf des Dialogs um die Auswahl der Datei vorzunehmen klappt ohne Probleme.
Ich habe für die Zusammenstellung des Anhangs nun folgendes versucht, bzw. umgebaut:
--- Code: ---If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang & fileToOpen) 'nun mit & fileToOpen erweitert
End If
--- Ende Code ---
Danach passiert aber nichts mehr, das Programm bleibt stehen... Es muss also an der Übergabe an Notes liegen.
Ich rufe den Versand der Mail als ActiveX-Schaltfläche als SUB auf, was meinst du mit Sub / Funktion?
Kannst du mir dazu bitte ein Beispiel geben?
Grundsätzlich ist es eine gute Idee mit dem Array, aktuell brauchen wir aber nur eine zusätzliche dynamische Datei, die wir zu der fest verdrahteten Mail anhängen.
Rein interessehalber: Wie macht man das mit dem Array und dem ArrayUnique? Vielleicht kann ich das in der Zukunft gut gebrauchen ;)
Vielen Dank im Voraus für deinen weiteren Input und die Geduld mit einem VBA-DAU!!! :)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln