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?
Ansatz? Gerne!
Das habe ich in der VBA Hilfe gefunden:
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If
Da Du ja schon das Excel Sheel in eine Mail eingebunden hast, kannst Du Dir damit ja was basteln.
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 ;) )
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
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
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
der Aufruf des Anhangs (also des Tabellenblatts) ausgeführt
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang) End If
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
Wo wird denn nach der Auswahl der Datei der Anhang in die Notes Mail gepackt? Wir rufe ich das auf?
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.
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang) End If
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 ;)
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:
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang & fileToOpen) 'nun mit & fileToOpen erweitert
End If
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!!! :)
Mit der Funktion meine ich eher sowas hier:
Sub attachFile(doc as variant, rtiAttachment As Variant, sFile As String)
If Not Len(sFile) = 0 Then
If rtiAttachment Is Nothing Then
Set rtiAttachment = doc.CREATERICHTEXTITEM("Attachment")
End If
Call rtiAttachment.EMBEDOBJECT(1454, "", sFile)
End If
End Sub
---------- hinzugefügt 22:42 Uhr START ----------
Hier noch die Änderung auf PDF:
fileToOPen = Application.GetOpenFilename("Adobe PDF Files (*.pdf), *.pdf")
If Not Len(fileToOPen) = 0 Then
MsgBox "Open " & fileToOPen
End If
---------- hinzugefügt 22:42 Uhr END ----------
Programmiere selbst seltenst in VBA (der Editor von VBA war noch nie toll).
Guck Dir mal den Domino Designer an. Über den kann ich natürlich auch meckern, aber gegen den VBA Editor ist das wie ein Fahrad gegen einen Porsche.