Autor Thema: Excel VBA mehrere Dateien versenden  (Gelesen 8997 mal)

Offline hexbsc

  • Frischling
  • *
  • Beiträge: 13
Excel VBA mehrere Dateien versenden
« am: 31.03.14 - 19:46:27 »
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

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Excel VBA mehrere Dateien versenden
« Antwort #1 am: 31.03.14 - 21:52:50 »
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?
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
Da Du ja schon das Excel Sheel in eine Mail eingebunden hast, kannst Du Dir damit ja was basteln.
Andy

Offline hexbsc

  • Frischling
  • *
  • Beiträge: 13
Re: Excel VBA mehrere Dateien versenden
« Antwort #2 am: 01.04.14 - 15:58:40 »
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

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

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

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

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Excel VBA mehrere Dateien versenden
« Antwort #3 am: 01.04.14 - 20:36:40 »
Zitat
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.

Code
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 ;)
Andy

Offline hexbsc

  • Frischling
  • *
  • Beiträge: 13
Re: Excel VBA mehrere Dateien versenden
« Antwort #4 am: 02.04.14 - 15:50:10 »
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

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!!! :)

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Excel VBA mehrere Dateien versenden
« Antwort #5 am: 02.04.14 - 22:18:38 »
Mit der Funktion meine ich eher sowas hier:
Code
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:
Code
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.
« Letzte Änderung: 02.04.14 - 22:47:17 von Andrew Harder »
Andy

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Excel VBA mehrere Dateien versenden
« Antwort #6 am: 02.04.14 - 22:35:37 »
Du solltest auch mehr Teile Deines Codes posten (damit es nicht zu viel wird, das vorher durch Debugging einschränken!). Aus den bislang bekannt gegebenen Schnipseln konnte man nie etwas sinnvolles erkennen.

Weiterhin: Ich schliesse mich Andy noch weitergehend an: Warum machst Du diesen Stunt aus einer Einzelplatzanwendung heraus und nicht gleich i nder Groupware-Anwendung, die dann obendrein und sowie noch den Mailteil übernimmt? Aber es kann ja sinnfältige Gründe geben, aber die wären für Hilfswillige dann auch interessant zu wissen.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz