Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Community,

ich bin leider nicht erfahren in Sachen Programmierung und stehe nun vor dem Problem, dass ich ein Formular habe mit 2 "Senden-Buttons" der 1 funktioniert bloß der zweite bereitet Probleme.

Genaueres: Excel 2010 /Makro / Visual Basic

Code:

'Second button macro'

Sub AktiveArbeitsmappeAlsAnhang2()

Application.DisplayAlerts = False

Dim aws As String

Dim wstemp As String

Dim dest As Variant

Dim olapp As Object

Dim Src As Variant

Src = Worksheets(1).Cells(2, 10).Value

Dim Ansp As Variant

Ansp = Worksheets(1).Cells(23, 4).Value

ActiveWorkbook.Save

aws = ActiveWorkbook.FullName

If Worksheets(1).Cells(4, 75).Value = ja Then

dest = "mMustermann1@Test.de; mMustermann2@Test.de; mMustermann3@Test.de; "

ElseIf Worksheets(1).Cells(4, 75).Value = nein Then

dest = "mMustermann1@Test.de; "

End If

Set olapp = CreateObject("Outlook.Application")

With olapp.CreateItem(0)

.To = dest + Src + Ansp

.Subject = "Informationen_Kundenaudits_gesamt"

.ReadReceiptRequested = True

.Attachments.Add aws

.Display

End With

Set olapp = Nothing

Application.DisplayAlerts = True

End Sub

Im Moment ist es so, dass wenn man auf den 2ten „Senden“ Button klickt, immer mmustermann2@test.de und Mmustermann3@test.de angeschrieben werden. Diese sollten jedoch nur dann im Verteiler auftauchen, wenn ein Voraudit geplant ist, also 9.1.1 [Cells(4, 75)]mit ja beantwortet wurde. mmustermann1@test.de soll immer angeschrieben werden.

Kann mir jemand behilflich sein?

Geschrieben (bearbeitet)

Ganze ehrlich klinkt das klingt nach Fummelei. Ich rate zu einer richtigen Liste (serverseitig), d.h. die Leute, die angeschrieben werden sollen stehen in der Liste und ich kann dann eine EMail an "meineliste1@wasauchimmer.de" schicken und die EMail wird an alle weiter geleitet. Eins der bekanntesten System dafür ist Majordomo bzw. Mailman

Vor allem wird hier auch direkt passend die CC/BCC Info gesetzt und auch die Antwortadresse.

P.S.: Verwende bitte für Codes die Code-Tags

Bearbeitet von flashpixx
Geschrieben
If Worksheets(1).Cells(4, 75).Value = ja Then

...

ElseIf Worksheets(1).Cells(4, 75).Value = nein Then

Hast du Variablen mit den Namen ja und nein? Oder meinst du hier Strings? Dann solltest du Anführungszeichen verwenden. Und in Zukunft Option Explicit verwenden, damit dir so etwas sofort um die Ohren fliegt.

Geschrieben

ich bin leider nicht erfahren in Sachen Programmierung und stehe nun vor dem Problem, dass ich ein Formular habe mit 2 "Senden-Buttons" der 1 funktioniert bloß der zweite bereitet Probleme.

Entschuldige bitte, aber das scheint nicht das einzigste Problem zu sein.

Ich persönlich finde solch eine Datenspeicherung in einer Applikation deren Stärken "Tabellenkalkulationen" sind, fast schon pervers um nicht zu sagen ein "konzeptionelles Desaster".

Es lässt sich nicht alles gut und sinnvoll im MS Excel lösen.

.oO(boaaah, da bekommt man Gänsehaut wenn man so etwas liest)

Geschrieben

Das Formular ist nicht von mir, für die Umsetzung kann ich nichts. Ich habe den Auftrag vom User bekommen es "zum laufen zu bringen" und konnte weder durch "" noch umstellen des Codes nicht den gewünschten Erfolg erziehlen.

Da dachte ich, ich könnte mich an die Community wenden. Da ich mir (durch fehlendes Wissen) leider nicht meinen Fehler erklären kann.

Geschrieben

Wenn sich an dem ExcelSheet irgendwas ändert, kann es passieren, dass das Script gegen die Wand läuft.

Versuch doch Überzeugungsarbeit gegenüber dem Auftraggeber zu leisten.

Stammdatenhaltung macht man in einer Datenbank und nicht in einer Tabellenkalkulation!

Geschrieben
Bin trotzdem dankbar, wenn jemand Anregungen zum Abändern des Codes hat :)

Tut mir leid, aber mein innerer Schweinehund verbietet mir, bei so etwas noch zu helfen ;)

Nicht böse sein :old

Geschrieben


If Worksheets(1).Cells(4, 75).Value = ja Then

    dest = "mMustermann1@Test.de; [email]mMustermann2@Test.de[/email]; [email]mMustermann3@Test.de[/email]; "

ElseIf Worksheets(1).Cells(4, 75).Value = nein Then

    dest = "mMustermann1@Test.de; "

End If

Ich rate noch einmal ganz dringen von diesem fachlich schlechten Ansatz ab. Ein Pseudo-Code (dies ist kein(!) lauffähiger VBA Code) löst dieses Problem

emailempfaenger = ["mMustermann1@Test.de"]

if audit :

   emailempfaenger.extend(["mMustermann2@Text.de", "mMustermann3@Text.de"])


write email with BCC recipients " ".join(emailempfaenger)

Ich erzeuge eine Liste mit den Empfängern, wobei ich die Personen, die immer eine Nachricht erhalten sollen direkt in der Liste anlege und dann prüfe ich ob ein Audit vorliegt (audit ist als Boolean aufzufassen), wenn ein audit == true ist, dann ergänze ich die Liste. Danach implodiere ich die Liste zu einem String, den ich als BCC verwende.

Du solltest bei solchen Dingen definitiv den BCC verwenden und eine korrekte Rückantwortadresse verwenden, dies ist ein allgemeines Vorgehen bei Mailinglisten.

Ich habe den Auftrag vom User bekommen es "zum laufen zu bringen" und konnte weder durch "" noch umstellen des Codes nicht den gewünschten Erfolg erziehlen.

Da dachte ich, ich könnte mich an die Community wenden.

Sorry für das F'Quote, aber wenn Du nicht das notwendige Wissen hast, den Code den Du produzierst zu verstehen, dann kannst Du die Problemlösung nicht beheben. Du musst Dir das notwendige Wissen aneignen. Ich rate Dir aber von Deinem Vorgehen ab, nimm ein fertiges System, das Mailinglisten verwalten kann (Links siehe mein erstes Post), damit hast Du all diese Probleme nicht.

Alternativ pass den MTA so an, dass er die Daten direkt verarbeiten kann, d.h. die Daten die jetzt in der Exceldatei gespeichert sind werden in eine Datenbank gelegt und anhand dieser liest der MTA die Mailadressen und leitet die EMail direkt an die entsprechenden Personen, sobald sich dann etwas in den Daten ändert, ist die Änderung auch direkt bei den Mailadressen konsistent. Eine Mailingliste aufzusetzen sollte für einen Administrator nur einige wenige Minuten Arbeit sein.

Geschrieben (bearbeitet)

Gugg mal hier: Link

Mit etwas eigenem Geschick sollte dies Deinen .... Schäff befriedigen ;)

Weitere Postings zu diesem Thema sind für mich nicht mehr von Interesse

Viel Erfolg ... unglaublich ;)

Bearbeitet von uenetz
  • 2 Wochen später...
Geschrieben
Gugg mal hier: Link

Mit etwas eigenem Geschick sollte dies Deinen .... Schäff befriedigen ;)

Weitere Postings zu diesem Thema sind für mich nicht mehr von Interesse

Viel Erfolg ... unglaublich ;)

In meinen Augen ist das Forum dazu da, um zu helfen, wenn jemand Probleme hat oder Informationen auszutauschen! Der Code besteht bereits und es wird nach der Suche von dem Fehler gebeten. Unter anderem finde ich nicht, dass das ein Lehrling im 1. Lehrjahr können muss. Nur zu sagen 'ich bekomme Gänsehaut' oder 'das ist nicht in Excel umsetzbar' hilft dem ThreadSteller gar nicht! Also sollte man entweder wirklich helfen, wenn man Ahnung hat (und die Lust zu helfen hat) oder blöde und unpassende Sprüche sein lassen!

Geschrieben
In meinen Augen ist das Forum dazu da, um zu helfen, wenn jemand Probleme hat oder Informationen auszutauschen!

Richtig!

Und das wurde auch gemacht, sogar mit klaren (gut gemeinten) Worten. ;)

blöde und unpassende Sprüche sein lassen!

Na denn zeig mal wie das geht ;)

  • 3 Wochen später...
Geschrieben (bearbeitet)
Na denn zeig mal wie das geht ;)

Problem wurde übrigens gelöst, nur zur Vervollständigung.

Hast du Variablen mit den Namen ja und nein? Oder meinst du hier Strings? Dann solltest du Anführungszeichen verwenden. Und in Zukunft Option Explicit verwenden, damit dir so etwas sofort um die Ohren fliegt.

Ich habe (bevor ich meine Frage hier gepostet habe) Bereits sämtliche Varianten mit "" etc. ausprobiert. Hatte bei mir leider keinen Erfolg. Nun hat ein Kollege genau den gleichen Code eingetippt und siehe da er wird nicht ignoriert.

Woran jetzt genau das Problem bei mir lag ist mir völlig egal, hauptsache es funktioniert und ich weiß das ich wohl nicht zu dumm dafür war ;) :marine

If Worksheets(1).Cells(75, 4).Value = "ja " Then

    dest = "Musteremailadresse1; Musteremailadresse2; Musteremailadresse3; "

ElseIf Worksheets(1).Cells(75, 4).Value = "nein" Then

    dest = "Musteremailadresse1; "

End If

Bearbeitet von GoldkuesstAsphalt

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...