Zum Inhalt springen

Rolf Thielmann

smapLand Mitglieder
  • Gesamte Inhalte

    54
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Rolf Thielmann

  1. Hallo allerseits, wenn man auf dem Gerät gespeicherte Bilder in eine Smap einfügen will, wäre es natürlich hilfreich, wenn man gleich mehrere Bilder auswählen und hinzufügen könnte. Wenn man allerdings den Umweg mit der Speicherung in der Galerie nur macht, damit die nicht nur in der Smap gespeichert sind, habe ich einen anderen Vorschlag. So viele Bilder wie nötig über einen Fotobaustein in einer Wiederholungsgruppe aufnehmen, den Report als Word-Datei an sich selbst (oder einen Rechner, auf dem die eingehenden Reports automatisch verarbeitet werden) senden und dann die Bilder aus der Word-Datei per Makro automatisiert abspeichern. Dann hat man die Bilder auch gleich auf einem Rechner und nicht nur auf dem Smartphone. 😉 Wie das Abspeichern von Bildern aus einer Word-Datei per Makro möglich ist, habe ich in meinem Post unter https://forum.community.smapone.com/topic/826-unterschrift-als-bilddatei/ beschrieben. Man müsste nur statt der Abspeicherung der letzten beiden Bilder eine For-Next-Schleife für alle enthaltenen Bilder verwenden. So könnte das aussehen: For Each eingebettetes_Bild in aktuelles_Dokument.InlineShapes.Items Z = Z + 1 Ziel = Tempordner & "Bild " & aktuelles_Dokument.Filename & " " & Format(Z, "0000") & "." & Dateiextension SaveInlineshapeToEmfFile eingebettetes_Bild, Ziel Next
  2. Hallo nochmal, ich habe mal die Weiterverarbeitung der Bilder in einem PDF-Leistungsbeleg für Kunden skizziert. Wen das interessiert, der findet das unter Zweite Version Report... 😉
  3. Hallo allerseits, ich hatte bereits beim Support nach einer Lösung für diese Anforderung nachgefragt. Leider ist so etwas derzeit nicht möglich/vorgesehen. Ich habe eine Smap zur Erfassung von Leistungsbelegdaten unserer Servicetechniker erstellt. In dem daraus resultierenden Report sind einige Informationen enthalten, die die Kunden nicht erhalten sollen/müssen. Daher war es meine Frage, ob es möglich ist, aus einer Smap zwei unterschiedliche Reports zu genrieren und die dann auch an unterschiedliche Empfänger zu senden. Da das derzeit nicht möglich/vorgesehen ist, habe ich eine Alternativlösung gesucht. Die Lösung ist, die Daten aus der Smap in eine Word-Datei einzutragen, diese dann als PDF-Datei abzuspeichern und per eMail an die Kunden zu senden. Manuell ist das natürlich kein Problem. Man kann sich aus dem Report ja alles herauskopieren und in ein neues Dokument einsetzen. Aber wir wollen durch die Digitalisierung ja weniger Arbeit haben und nicht mehr. Nach einigen Recherchen und Tests habe ich eine zufriedenstellende Lösung über VBA-Makros erstellt. Da die Reports per eMail hereinkommen und auch wieder per eMail verschickt werden, habe ich das in Outlook programmiert. In der Smap habe ich dazu einen eMailversandbaustein eingebaut, der alle relevanten Daten mit entsprechenden Bezeichnungen in den Text schreibt. Weiterhin wird hier der Standard-Report als Word-Datei eingefügt. Die eMail wird auf einem virtuellen Rechner mit Outlook 365 empfangen. Im Outlook habe ich im Visual Basic Editor (zu starten über Alt+F11) im Projekt-Explorer (Anzeige über Strg+R) unter "Microsoft Outlook Objekte" > "ThisOutlookSession" das Makro "Sub Application_Startup()" hinzugefügt, das jeweils beim Start von Outlook ausgeführt wird. Über den Taskmanager lasse ich Outlook zyklisch starten. Das Makro Übernimmt dann alle Daten aus dem eMailtext und speichert sie in eine Text-Datei (Der Dateiname enthält zur Identifikation die Auftragsnummer des Einsatzes und den Zeitpunkt des Einsatzbeginns). Weiterhin wird der Report unter dem gleichen Dateinamen (nur eine andere Extension) gespeichert und per Makro mit Word geöffnet. Aus der geöffneten Word-Datei kann ich die Unterschriften von Servicetechniker und Kunde als Bilddatei speichern. Wie das geht, habe ich bereits unter dem Thema Unterschrift als Bilddatei gepostet. Auf dem Empfangsrechner ist die eMail damit abgearbeitet und kann gelöscht werden (den vollständigen Report als PDF habe ich mit einem separaten eMailversandbaustein an unsere Serviceabteilung gesendet). Die nachfolgenden Schritte könnten grundsätzlich auch auf dem Empfangsrechner ausgeführt werden. Aber da wir die Leistungsbelege über eine NoReply-eMailadresse versenden wollen, ist es geschickter, dafür einen zweiten virtuellen Rechner zu verwenden, auf dem diese eMailadresse eingerichtet ist. Auf dem virtuellen Versandrechner ist ebenfalls Outlook 365 eingerichtet. Auch hier wird Outlook zyklisch gestartet und ein Autostartmakro ausgeführt. Wenn eine Textdatei mit Leistungsdaten identifiziert wird, werden die Daten ausgelesen und zusammen mit den Unterschriftsdateien in eine Word Vorlage (mit Platzhalten für die entsprechenden Daten) eingetragen. Diese Word-Datei wird dann für die weitere Bearbeitung (Abrechnung) unter der Auftragsnummer als PDF gespeichert und gleichzeitig per eMail als PDF an den Kunden gesendet. Zum Schluss werden noch die Textdatei und die Bilddateien zu diesem Auftrag gelöscht. So lange Textdateien mit Abrechnungsdaten vorhanden sind, wird das Makro wiederholt. Wenn der entsprechende Ordner leer ist, wird Outlook beendet und ist für den nächsten zyklischen Start bereit. Den gesamten VBA-Code hier zu posten würde wohl den Rahmen sprengen. Wenn aber jemand Interesse hat, würde ich versuchen, den VBA-Code um sich wiederholdende Arbeitsschritte zu reduzieren und das dann zu posten.
  4. Hallo allerseits, ich habe eine andere Lösung gefunden. Es ist vielleicht nicht besonders elegant, aber es funktioniert und ich brauche dafür keine Kenntnis der RestAPI bzw. wie man überhaupt eine API nutzt. 🙂 So geht es: ich sende den Report als Word-Datei an mich. Dann kann ich mit nachfolgendem VBA-Code das vorletzte und letzte in der Word-Datei enthaltene Bilder als Bilddatei speichern: Sub Demo_Bilder_aus_Word_Dokument_speichern() Dim aktuelles_Dokument As Word.Document Dim eingebettetes_Bild As InlineShape Dim Ziel As String Tempordner = "S:\- Temp\" Dateiextension = "EMF" On Error Resume Next Kill Tempordner & "Unterschrift *." & Dateiextension On Error GoTo 0 Set aktuelles_Dokument = Word.ActiveDocument Ziel = Tempordner & "Unterschrift Techniker." & Dateiextension Set eingebettetes_Bild = aktuelles_Dokument.InlineShapes.Item(aktuelles_Dokument.InlineShapes.Count - 1) SaveInlineshapeToEmfFile eingebettetes_Bild, Ziel Ziel = Tempordner & "Unterschrift Kunde." & Dateiextension Set eingebettetes_Bild = aktuelles_Dokument.InlineShapes.Item(aktuelles_Dokument.InlineShapes.Count) SaveInlineshapeToEmfFile eingebettetes_Bild, Ziel End Sub Function SaveInlineshapeToEmfFile(eingebettetes_Bild As InlineShape, Ziel As String) As Boolean Dim EMF_Bytes() As Byte EMF_Bytes = eingebettetes_Bild.Range.EnhMetaFileBits Open Ziel For Binary Access Write As #1 Put #1, , EMF_Bytes Close #1 End Function Statt EMF kann man auch JPG als Dateiextension verwenden. VIELEN DANK an OlimilO für seinen Tipp im VBA-Forum (https://foren.activevb.de/forum/vba/thread-27329/beitrag-27330/Re-Bild-aus-Word-Datei-als-Bild/#forum) Ich habe auch ein Makro entwickelt, mit dem ich die Unterschriftsdateien in eine Word-Datei einfügen kann, über die ich dann eine zweite Variante des Reports (für unsere Kunden) erstellen kann. Das werde ich bei nächster Gelegenheit in meinem dazugehörigen Beitrag posten. 😉
  5. Hallo Bülent, ich habe es jetzt mit der Checkbox gelöst. Vielen Dank für den Hinweis.
  6. Hallo Ismet, ich bin erst seit September in Sachen SmapOne unterwegs und habe noch keine Erfahrung mit der REST-API. Meine Programmierkenntnisse gründen sich auf hobbymäßige Programmierungen in Basic (in den 80ern/90ern) und VBA (Excel/Outlook). Dabei habe ich mit VBA auch schon auf Windows Systemvariablen zugegriffen. Aber hier habe ich meistens Code in irgendwelchen Foren gefunden und auf meine Bedürfnisse angepasst. Mit diesen Kenntnissen kann ich Texte aus eMails bzw. PDF-Dateien herauslesen. Ein Bild, das als Dateianhang in einer eMail enthalten ist, könnte ich auch verarbeiten. Aber an die im PDF eingebetteten Bilder (Unterschriften) komme ich leider nicht heran. Ich muss zugeben, dass mich die Dokumentation zur API überfordert. Ich weiß gar nicht, wo ich anfangen soll. Gibt es irgendwo Beispielcode, wie man mit VBA oder vergleichbaren Programmiersprachen auf die REST-API und damit auf Daten/Bilder zugreifen kann?
  7. Hallo allerseits, ich baue gerade einen digitalen Leistungsbeleg. Die Smap an sich habe ich fertiggestellt. Jetzt geht es darum, aus der Smap 2 Reports zu generieren (einen mit allen Infos für den internen Gebrauch und einen anderen mit nur den Daten für den Kunden). Da man nicht 2 unterschiedliche Reports aus 1 Smap erstellen kann, ist meine Idee, alle für die Kundenversion notwendigen Daten in den Text einer eMail zu schreiben und daraus per Outlook-Makro den Report für den Kunden zu erstellen. Mein Problem besteht nun darin, die Unterschrift des Kunden als Bilddatei zu erhalten, die ich in eine Vorlage einfügen kann. Gibt es eine Möglichkeit, den Inhalt eines Unterschriftsfelds per eMail (als Bilddatei oder als URL zum Download) zu versenden?
  8. Hallo allerseits, wie es scheint, habe ich den Fehler erkannt. Beim Export aus dem ERP wurde offensichtlich die Zeichenkombination "/ Ø" durch sehr viele Ziffern ersetzt. Nachdem ich das manuell ersetzt und neu importiert habe, konnte ich das Feld auch wieder als Suchspalte klassifizieren. Ich gehe davon aus, dass der lange String nicht indiziert werden konnte und daher eine Suche danach nicht möglich gewesen wäre.
  9. Hallo allerseits, ich habe in meiner Smap für den digitalen Leistungsbeleg mehrere DSABs. In einem Baustein werden für die letzte Spalte die drei Buttons für Suchspalte, Vorschauspalte und Nutzerzuordnung nicht angezeigt. So sieht es normalerweise aus: So sieht es bei dem betroffenen DSAB aus: Die entsprechenden Dateien stammen alle aus der entsprechenden Hauptdatei (Aufteilung per Makro) und haben in Excel das identische Format. Hat jemand eine Idee, woran das liegen könnte?
  10. Hallo Sebastian, ich habe eben festgestellt, dass das Problem nicht auftritt, wenn ich die Exceldatei öffne und speichere. Ich füge daher die Datei als Export aus dem ERP und noch einmal geöffnet und gespeichert (ansonsten unverändert) bei. Offene_Auftraege_Neugeschaeft.xlsxOffene_Auftraege_Neugeschaeft neu gespeichert.xlsx
  11. Hallo Bülent, in der Excel-Datei sind die Zellen benutzerdefiniert, aber als Datum formatiert (s.u.). Anzeigen ist erst einmal die wichtigste Funktion. Aber eine Berechnung, wieviel Zeit noch bis zu dem Termin bleibt, ist auch angedacht.
  12. Hallo allerseits, ich habe in meinen Smaps einen Datensatzauswahlbaustein der eine Excel-Datei mit einer Datumsspalte als Datenquelle hat. Wenn ich für die Spalte mit dem Datum das Textformat auswähle, wird nichts angezeigt. Wenn ich für die Spalte mit dem Datum das Zahl auswähle, wird das Datum als Zahl angezeigt. Die Excel-Datei wird automatisch täglich aus der ERP-Software exportiert und soll (demnächst) auch automatisch importiert werden. Spätestens wenn der Import automatisch funktioniert, scheidet die Option aus, vor dem Export die Spalte in Excel als Text zu formatieren. Hat jemand eine andere Idee? VIELEN DANK im Voraus
  13. Hallo allerseits, ich baue gerade einen digitalen Leistungsbeleg und habe ein Problem. Ich habe eine Gruppe für die Erfassung von Zeiten für einen zweiten Techniker in der Smap. Wenn der Name des Technikers eingegeben wird, wird der nächste Baustein aktiviert, der dann auch ein Pflichtfeld ist. Weitere Bausteine (von denen einige ebenfalls Pflichtfelder sind) folgen und werden jeweils auch nur dann aktiviert, wenn die vorherigen Felder vollständig ausgefüllt sind. Das funktioniert grundsätzlich gut. Wenn kein zweiter Techniker dabei ist, bleibt der Baustein mit dem Namen des zweiten Technikers eben frei und die nachfolgenden Bausteine werden nicht aktiviert. Leider musste ich feststellen, dass die Übermittlung erst möglich ist, wenn ein zweiter Techniker eingetragen ist. Ich habe vermutet, dass es an irgendwelchen Pflichtfeldern innerhalb der Gruppe liegt. Allerdings habe ich das gleiche Problem, wenn der nachfolgende Baustein kein Pflichtfeld ist. Außerdem sind in der Gruppe noch andere nicht aktivierte Bausteine als Pflichtfelder, die die Übermittlung offensichtlich nicht verhindern, wenn sie nicht aktiviert sind. Hat jemand ein Idee, woran das liegen könnte? Hier der Aufbau inkl. Aktivierungsregel: Die nachfolgenden Bausteine werden jeweils deaktiviert, wenn die Funktion des Technikers nicht ausgewählt wurde.
  14. Hallo Manuel, hallo Bülent, VIELEN DANK für Eure Tipps! Ich habe es etwas anders umgesetzt, weil der folgende Abschnitt nur eingeblendet werden soll, wenn kein Eintrag in der Wiederholungsgruppe vorhanden ist, bzw. alle vollständig ausgefüllt sind. Hier nochmal meine Version:
  15. Hallo Bülent, ich habe bewusst die AND-Funktion verwendet. Wenn beide Eingabebausteine leer sind, erhält die Formel des Kontrollbausteins den Wert 1 und nur wenn die Summe aller Kontrollbausteine in der Wiederholungsgruppe 0 ist, wird der nächste Abschnitt aktiviert. Das Problem liegt nicht in der Formel des Kontrollbausteins, sondern darin, dass die Summe aller Kontrollbausteine keinen Wert liefert, wenn keine Einträge in der Wiederholungsgruppe vorhanden sind. Darum frage ich mich, ob bzw. wie man feststellen kann, ob in einer Wiederholungsgruppe überhaupt ein Eintrag vorhanden ist.
  16. Hallo Johanna, ich finde das smapLand sehr gut und habe (obwohl ich erst wenige Wochen dabei bin) schon den ein oder anderen Beitrag erstellt und Feedback erhalten. 😉 Die ganzen eMails, die man zu Anfang erhält, waren ggf. etwas zu viel. Man hat ja auch noch Tagesgeschäft zu erledigen. Aber vielleicht erinnert man sich ja an das ein oder andere, wenn man mal ein Problem oder eine Idee hat und Inspiration für die Umsetzung braucht. Ich werde weiterhin regelmäßig "reinschauen"...
  17. Hallo Bülent, die erste Formel "IF(AND(EMPTY({Anzahl_Ganzzahl}), EMPTY({Anzahl_Kommazahl})), 1, 0)" ist der Wert, den der Baustein {Kontrollergebnis_Material} innerhalb der Wiederholungsgruppe annimmt. Normalerweise würde man wohl 0 verwenden, wenn beide Eingabebausteine leer sind und 1, wenn einer der Bausteine einen Wert enthält. Aber ich hatte gehofft, dass die Summe in der Aktivierungsformel des nächsten Abschnitts "EQUALS(SUM({WG_Materialeinsatz.Kontrollergebnis_Material}), 0))" auch 0 ergibt, wenn gar keine Werte in der Wiederholungsgruppe eingegeben sind...
  18. Hallo allerseits, ich baue gerade an einer Smap zur Erfassung eines Leistungsbelegs für unsere Servicetechniker. Die Smap ist in mehrere Abschnitte unterteilt, die immer erst angezeigt werden, wenn der vorhergehende Abschnitt bearbeitet wurde. In einem Abschnitt geht es um das eingesetzte Material. Hier habe ich eine Wiederholungsgruppe angelegt, in der Artikel ausgewählt werden und dazu die Mengeneinheit und die Anzahl erfasst wird. Je nach Mengeneinheit wird für die Anzahl ein Zahleneingabefeld für ganze Zahlen oder Kommazahlen angezeigt. Am Ende der Wiederholungsgruppe habe ich einen Zahlenergebnisbaustein, mit dem ich überprüfe, ob in einem der beiden Anzahlfelder etwas eingegeben wurde. Formel für den Baustein lautet IF(AND(EMPTY({Anzahl_Ganzzahl}), EMPTY({Anzahl_Kommazahl})), 1, 0) Für den nächsten Abschnitt habe ich dann die nachfolgende Aktivierungsregel WENN EQUALS(SUM({WG_Materialeinsatz.Kontrollergebnis_Material}), 0)) Dann ABSCHNITT ist aktiviert Das funktioniert soweit gut, wenn mindestens ein Artikel ausgewählt ist. Wenn bei einem der Artikel keine Menge eingegeben ist, ist die Summe der Kontrollergebnisse größer 0 und der nächste Abschnitt wird nicht angezeigt. Leider wird der nächste Abschnitt aber auch nicht angezeigt, wenn kein Material eingesetzt wurde. Dann zeigt die Summe aller Kontrollergebnisse (ich habe dafür vorerst noch einen Zahlenergebnisbaustein eingebaut) "kein Ergebnis berechnet" (s.u.) und der nächste Abschnitt wird nicht angezeigt. Hat jemand eine Idee, wie ich abfragen kann, ob überhaupt ein Eintrag in der Wiederholungsgruppe erstellt wurde? VIELEN DANK im Voraus
  19. Hallo Lena, das ist wirklich ein guter Tipp. Ich habe das gleich versucht, das in einer Smap (Leistungsbeleg für mehrere Servicetechniker) zu verwenden. Bei den Reisezeiten (die vor Beendigung der Smap feststehen) hat das auch super funktioniert: T1 steht hier für den ersten Techniker und TX sind die Techniker, die in einer Wiederholungsgruppe eingegeben werden können. Text_Reisezeit_TX wird in der Wiederholungsgruppe zusammengesetzt. So sieht dann das Ergebnis aus: Bei den Arbeitszeiten wird das allerdings leider schon schwierig. Hier habe ich das Problem, dass erst mit Unterzeichnung der Smap durch den Kunden die Arbeitszeit endet. Hierfür habe ich vor der Unterschrift einen Zeitstempel. Für den ersten Techniker kann ich dann die Zeit per Formel ausrechnen. Für die Techniker, die in der Wiederholungsgruppe erfasst werden, können abweichende Arbeitszeiten erfasst werden. Die zu verarbeiten, ist kein Problem. Es gibt aber auch Fälle, wo ein zweiter Techniker ebenso wie der erste bis zur Unterschrift durch den Kunden abzurechnen ist. Hier benötige ich daher eine Abfrage, ob abweichende Zeiten erfasst sind. In Abhängigkeit dieser Abfrage müsste die abweichende Arbeitszeit aus der Wiederholungsgruppe bzw. die Differenz aus Zeitstempel vor der Unterschrift und Arbeitsbeginn eingesetzt werden. Ich habe aber noch keine Möglichkeit gefunden, eine derartige Abfrage in die Wiederholungsgruppe zu stellen. Ohne dass könnte ich nur 10 mal die gleichen Bausteine einfügen und diese dann manuell zusammenfügen. Hat jemand eine elegantere Idee?
  20. Das hört sich gut an. Könnte man dann einen PDF-Bericht für den Abschnitt "Intern" und einen PDF-Bericht für den Abschnitt "Kunden" erstellen und an unterschiedliche eMailadressen versenden? Ich würde dann diese Abschnitte in der App nicht anzeigen und nur für die PDF-Berichte verwenden.
  21. Mit der API habe ich noch nicht gearbeitet, würde mich aber auch dafür interessieren... 😉
  22. Hallo Annemarie, ich bin noch nicht so lange mit SmapOne zu Gange. Daher bevorzuge ich einfache Lösungen, auch wenn sie ggf. nicht so elegant aussehen. Mein Anwendungsbeispiel ist der Leistungsbeleg für Servicetechniker. Meine Idee war, dass der Servicetechniker auf der ersten Formularseite Zeiten (ggf. pro Techniker), verwendete Ersatzteile/Materialien und Einstellungen/Leistungsbeschreibungen erfasst und ggf. noch ein paar Bilder hinzufügt, etc. Diese Formularseite könnte der Servicetechniker selbst unterschreiben. Die ginge dann an unsere Serviceabteilung. Hier hatte ich wie Du an einen eMailbaustein gedacht. Für den Kunden wäre dann die zweite Formularseite, auf der über Ergebnisbausteine die Zeiten, Ersatzteile/Materialien (andere Bezeichnungen, als die, die der Servicetechniker verwendet) und die Leistungsbeschreibungen angezeigt werden. Hier würde ich am Ende wieder einen Unterschriftsbaustein für den Kunden einfügen und das ganze dann über einen eMailbaustein an die Rechnungsprüfung des Kunden und unsere Abrechnungsabteilung versenden. Ich denke, dass dafür grundsätzlich schon alles vorhanden wäre, wenn man mehrere Formularseiten in einer Smap einfügen könnte. 😉
  23. Hallo allerseits, dann poste ich mal den relevanten Code. Über die Windows Aufgabenplanung lasse ich einmal pro Stunde Outlook starten und nach 15 Minuten wieder beenden. Im VisualBasic Editor von Outlook (aufrufbar über Alt+F11) wird unter ThisOutlookSession das Autostart-Makro eingetragen. Der eigentliche Code steht in einer Funktion, die ich in einem separaten Modul eingetragen habe. So kann ich das auch manuell starten bzw. als Datei exportieren/importieren. So sieht das dann im VisualBasic-Editor aus: Und hier der VBA-Code... ThisOutlookSession Private Sub Application_Startup() Call Funktion_Bereinigung_Posteingang End Sub Modul Sub Bereinigung_Posteingang() Call Funktion_Bereinigung_Posteingan End Sub Function Funktion_Bereinigung_Posteingang() Dim aktuelle_eMail As MailItem Dim Quellordner As Object Dim ShellObjekt As Object Dim Verknüpfung As Object Projektmanagementordner = "S:\DATEN\PUBLIC\Projektmanagement\Aufträge\" Fertigungsordner = "S:\DATEN\Fertigung\" Eingangsrechnungsordner = "S:\DATEN\Rechnungen\Eingangsrechnungen\" On Error GoTo Projektmanagementordner_nicht_vorhanden: ChDir Projektmanagementordner On Error GoTo Fertigungsordner_nicht_vorhanden: ChDir Fertigungsordner & "Qualitätssicherung" On Error GoTo 0 Set olNsp = Application.Application.GetNamespace("MAPI") Set ShellObjekt = CreateObject("WScript.Shell") If Format(Environ("USERNAME"), "<") = "Sync" Then Set Quellordner = olNsp.Folders.Item("Sync@test.de").Folders.Item("Posteingang") Else Set Quellordner = olNsp.Folders.Item("ich@test.de").Folders.Item("Digitalisierung").Folders.Item("Test") End If Anzahl_smapOne_eMails = 1 While Anzahl_smapOne_eMails > 0 And Quellordner.Items.Count > 0 Anzahl_smapOne_eMails = 0 For Each aktuelle_eMail In Quellordner.Items If aktuelle_eMail.SenderEmailAddress = "no-reply@smapone.com" Then Anzahl_smapOne_eMails = Anzahl_smapOne_eMails + 1 Auftragsnummer = Mid(aktuelle_eMail.Subject, InStr(aktuelle_eMail.Subject, "Auftrag ") + 8, 7) If Left(aktuelle_eMail.Subject, 19) = "Fertigungskontrolle" Then Zielordner = Projektmanagementordner & Auftragsnummer & "\" Zieldatei = Replace(aktuelle_eMail.Subject, " > ", "-") & " " & Format(aktuelle_eMail.ReceivedTime, "YYYY-MM-DD hh-mm-ss") & ".PDF" QS_Ordner = "Fertigungskontrolle" End If If Left(aktuelle_eMail.Subject, 11) = "Reklamation" Then Zielordner = Projektmanagementordner & Auftragsnummer & "\" Zieldatei = Replace(aktuelle_eMail.Subject, " > ", "-") & " " & Format(aktuelle_eMail.ReceivedTime, "YYYY-MM-DD hh-mm-ss") & ".PDF" Zieldatei = Replace(Zieldatei, "Physikalische ", "") Zieldatei = Replace(Zieldatei, "Ungewöhnliche ", "") Zieldatei = Replace(Zieldatei, "Fehlende ", "") Zieldatei = Replace(Zieldatei, "/-informationen", "") Zieldatei = Replace(Zieldatei, "Fehlende/s ", "") Zieldatei = Replace(Zieldatei, "/Beistellungen/Normteile", "") QS_Ordner = "Reklamation" End If If Left(aktuelle_eMail.Subject, 7) = "Versand" Then Zielordner = Projektmanagementordner & Auftragsnummer & "\" Zieldatei = Replace(aktuelle_eMail.Subject, " > ", "-") & " " & Format(aktuelle_eMail.ReceivedTime, "YYYY-MM-DD hh-mm-ss") & ".PDF" Zieldatei = Replace(Zieldatei, " Maschine", "") QS_Ordner = "Endmontage" End If If QS_Ordner <> "" Then On Error Resume Next MkDir Zielordner MkDir Zielordner & "Dokumentation" MkDir Zielordner & "Dokumentation\Qualitätssicherung" MkDir Fertigungsordner & "Qualitätssicherung\" & QS_Ordner On Error GoTo 0 For Each Dateianhang In aktuelle_eMail.Attachments If Right(Format(Dateianhang.FileName, ">"), 3) = "PDF" Then Dateianhang.SaveAsFile Zielordner & "Dokumentation\Qualitätssicherung\" & Zieldatei Set Verknüpfung = ShellObjekt.CreateShortcut(Fertigungsordner & "Qualitätssicherung\" & QS_Ordner & "\" & Left(Zieldatei, Len(Zieldatei) - 4) & ".lnk") Verknüpfung.WorkingDirectory = Zielordner & "Dokumentation\Qualitätssicherung" Verknüpfung.TargetPath = Zielordner & "Dokumentation\Qualitätssicherung\" & Zieldatei Verknüpfung.Save End If Next QS_Ordner = "" Else If Left(aktuelle_eMail.Subject, 14) = "Servicebericht" Then Zieldatei = aktuelle_eMail.Subject While InStr(Zieldatei, ">") > 0 Zieldatei = Trim(Right(Zieldatei, Len(Zieldatei) - InStr(Zieldatei, ">"))) Wend Zieldatei = "Auftrag " & Auftragsnummer & " " & Zieldatei & " " & Format(aktuelle_eMail.ReceivedTime, "YYYY-MM-DD hh-mm-ss") & " ( LB ).PDF" Call Funktion_Dateiname_bereinigen(Modus, Aktualität, Zieldatei) For Each Dateianhang In aktuelle_eMail.Attachments If Right(Format(Dateianhang.FileName, ">"), 3) = "PDF" Then Dateianhang.SaveAsFile Eingangsrechnungsordner & Zieldatei Next End If End If aktuelle_eMail.Delete End If Next If Format(Environ("USERNAME"), "<") <> "Sync" Then Shell "explorer.exe /e, " & Projektmanagementordner & ", vbNormalFocus" Wend Exit Function Projektmanagementordner_nicht_vorhanden: If Format(Environ("USERNAME"), "<") <> "Sync" Then Hinweis = MsgBox("Der Projektmanagementordner ist nicht vorhanden!" & Chr(10) & Chr(10) & Projektmanagementordner, 0, "Überprüfung Ordner") Funktion_übergeordneter_Ordner (Projektmanagementordner) Exit Function Fertigungsordner_nicht_vorhanden: If Format(Environ("USERNAME"), "<") <> "Sync" Then Hinweis = MsgBox("Der Fertigungsordner ist nicht vorhanden!" & Chr(10) & Chr(10) & Fertigungsordner, 0, "Überprüfung Ordner") Funktion_übergeordneter_Ordner (Fertigungsordner) Exit Function End Function Function Funktion_übergeordneter_Ordner(Testordner) On Error GoTo Testordner_nicht_vorhanden: ChDir Testordner On Error GoTo 0 Shell "explorer.exe /e, " & Testordner, vbNormalFocus Exit Function Testordner_nicht_vorhanden: While Right(Testordner, 1) <> "\" Testordner = Left(Testordner, Len(Testordner) - 1) Wend Testordner = Left(Testordner, Len(Testordner) - 1) MsgBox Testordner Resume End Function
  24. Hallo allerseits, das sieht wirklich Interessant aus. Für mich als SmapOne-Neuling erscheint das allerdings auf den ersten und auch zweiten Blick noch sehr kompliziert. Wir nutzen SmapOne ja, weil es einfach sein soll, eine Smap zu erstellen. 😉 Ich hatte daher die Idee für unseren Servicebericht, einfach eine zweite Formularseite in der Smap hinzuzufügen, auf der dann die für den Kunden (bei unserer Version sollen die Kunden nicht alles erhalten) relevanten Daten zusammengefasst werden. Dann müsste der Servicetechniker nur auf der ersten Seite alles erfassen und dann für die Bestätigung durch den Kunden auf die zweite Formularseite gehen. Der Kunde sieht nur, was er sehen soll, unterschreibt und die Smap kann übermittelt werden. Der Report zur ersten Formularseite könnte dann an die Serviceabteilung und der Report zur zweiten Formularseite könnte an die Rechnungsprüfung des Kunden gemailt werden. Ich habe diesbezüglich auch einen Eintrag in der Rubrik Feature-Wünsche eingetragen (s.u.). Ich wäre für positive Kommentare und Unterstützung sehr dankbar. 😉
×
×
  • Neu erstellen...