Oktober 20, 2020, 10:11:54

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Serien Emails mit variablen Anhängen in ACCESS im Entwurf erstellen

Begonnen von ToBu, Mai 26, 2020, 14:28:12

⏪ vorheriges - nächstes ⏩

ToBu

Danke Franz,
es kommt leider eine Fehlermeldung "Element nicht gefunden!". Wahrscheinlich liegt das daran, dass MitgliedNr numerisch definiert ist as Long und im PDF-Namen die ersten 3 Ziffern ja alphanumerisch sind. Wie kann ich für diesen Grund die MitgliedNr in einen String konvertieren, so dass eine Übereinstimmung gefunden werden kann? Kann man die MitgliedNr as String definieren, obwohl in dem rs- Record MitgliedNr in numerischer Form übergeben wird?
Bin wieder ratlos!
Danke für Deine Geduld!
Gruß ToBu

DF6GL

Hallo,

Du interpretierst die Fehlermeldung falsch.

Sie sagt aus, dass eine Variable, bzw. Tabelle/Recordsetfeld nicht existiert.

Du solltest mitteilen, wo die Fehlermeldung auftritt und welche Codestelle markiert wird.


Hier (wenn es sich um dieses Feld dreht):
Set rs = db.OpenRecordset("SELECT MitglNr, Anrede, NameMitarbeiter, PersEmail, Berichtszeit, Pfad_Ordner" & _
                                " FROM EmailVersandDaten")

wird das Feld "MitglNr"  selektiert und später für den Dateinamen benutzt:

strFilename = Dir(Pfad_Ordner & rs!MitglNr & "*.PDF")


Auch wenn rs!MitglNr vom Datentyp Zahl/Long ist, geschieht hier eine interne Konvertierung der numerischen Zahl in Ziffern (Text, String).


Das Sternchen sorgt dafür, dass auch Dateien gefunden werden, die zwischen der Mitgliednummer und der .PDF-Endung irgendwelche Zeichen enthalten.

Wenn das nicht gewünscht ist, dann entferne (überall) einfach dieses Sternchen.


ZitatAlle PDFs mit gleicher BetriebsNr. sollen aus diesem Ordner in einer Routine (sr3) - und nur diese - ausgelesen


Hier ist von Betriebsnummer und nicht von Mitgliedsnummer gesprochen.  Dieses Feld ist nicht in den Recordsets enthalten. Wo also kommt dieses her?



Sehe aber gerade noch ein Durcheinander:

lösche die markierte rote Zeile und ändere in die blaue Markierung:

.
.
.

.
   strFolder = Pfad_Ordner  'D:\MeinVerzeichnis\
       
        Set oApp = CreateObject("Outlook.Application")
        Set outMail =  outApp.CreateItem(olMailItem)
.
.
.
.



Und nochmal:  Kompiliere den Code, setze einen Haltepunkt und fahre mit Einzelschritt durch die Codezeilen.

Prüfe jedes Mal den Inhalt der Variablen, bzw. Recordset-Felder.
(Option Explicit nicht vergessen!)

       

ToBu

Hallo Franz,
bis zum Stop im u.a. Modulauszug läuft alles richtig!
In der MsgBox werden Pfad und Ordner korrekt ausgegeben mit allen dazugehörigen \s.
Die ersten 3 Zeichen des strFilename beinhalten korrekt die MitglNr

Im nächsten Step des Moduls kommt der Stop.
Weiter mit der F8-Taste kommt die Fehlermeldung "Wert in der Liste nicht gefunden!",
sicher weil sr.MitgliedNr im strFilename nicht gefunden wurde,
obwohl im Schritt zuvor der strFilename korrekt ausgegeben worden ist.
Danke Dir!
Gruß ToBu
Hier der Auszug:

                Set oApp = CreateObject("Outlook.Application")
                Set outMail = oApp.CreateItem(olMailItem)
       
   >>>>>>       strFilename = Dir(rs!Pfad_Ordner & rs!MitglNr & "*.PDF") <<<<<< ist korrekt besetzt!!!

                Do Until strFilename = ""
                outMail.Attachments.Add (rs!Pfad_Ordner & strFilename)
                MsgBox rs!Pfad_Ordner & strFilename
    >>>>>>      Stop  bis hier läuft alles korrekt!
               
                strFilename = Dir(rs!Pfad_Ordner & rs!MitgliedNr & "*.PDF")  <<<<<< rs!MitgliedNr ist der Fehler!!!
                Loop

          outMail.To = emailTo
          outMail.Subject = emailSubject
          outMail.Body = emailText
          outMail.Display
          outMail.Save

ToBu

P.S.: Option Explizit habe ich vergebens setzen wollen nach meinem Sub click 63().
Wie geht das in einem bestehenden Modul?
Wiedermal habe ich keine Ahnung!

ToBu

Hallo Franz,
Entschuldigung, ich habe statt MitglNr MitgliedNr geschrieben! Das ist natürlich ein Fehler von mir! Mann wird wohl alt! Gott sei's gedankt!
Mit dem Do until Loop hapert es allerdings noch! Habe diesen mal weggelassen. Dann klappt es für alle Mitglieder Datensätze (rs), allerdings werden dann ausschließlich die ersten PDFs als Anhang richtig dem persönlichen Text zugeordnet und im Entwürfe-Ordner gespeichert. Es werden offensichtlich alle weiteren PDFs mit derselben MitglNr nicht abgearbeitet. Ließe sich das nicht mit einer For .., Next Schleife bewerkstelligen oder Do until EOF, innerhalb deren eine If ... Then Abfrage den Str(strFilename,1,3) vergleicht mit MitglNr?
Vielen Dank nochmal an dieser Stelle für Deine kompetente Unterstützung!
Gruß ToBu

Set oApp = CreateObject("Outlook.Application")
                Set outMail = oApp.CreateItem(olMailItem)
                strFilename = Dir(rs!Pfad_Ordner & rs!MitglNr & "*.PDF")

                'Do Until strFilename = ""
               
                outMail.Attachments.Add (rs!Pfad_Ordner & strFilename)
                strFilename = Dir(rs!Pfad_Ordner & rs!MitglNr & "*.PDF")
               
                'Loop

DF6GL

Hallo,

scheib mal so:


.
.
.
               strFilename = Dir(rs!Pfad_Ordner & rs!MitglNr & "*.PDF")

                Do Until strFilename = ""
               
                outMail.Attachments.Add (rs!Pfad_Ordner & strFilename)
                strFilename = Dir()   'Parameter weglassen
               
                Loop
.
.
.


Nix mit If.. then.. else..

ToBu

Hallo Franz,
jetzt klappt alles wie am Schnürchen!
Es ist wirklich exzellent, wie man hier in diesem Forum von so bewundernswerten Profis wie Franz u.a. begleitet, korrigiert und auf die richtige Spur gesetzt wird und dadurch ein Menge an VBA-Wissen vermittelt bekommt, auch wenn ich als Autodidakt bei weitem noch nicht alles wirklich begriffen habe, weil ich eben diese "Fremdsprache" nicht beherrsche! Aber so kommt man doch immer ein Stückchen weiter, und das macht richtig Spaß!
Vielen herzlichen Dank für so viel geduldige Unterstützung..., Franz!
Jetzt suche ich wieder vergeblich nach dem Button "Thema gelöst".