Zum Inhalt springen

Rolf Thielmann

smapLand Mitglieder
  • Gesamte Inhalte

    54
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Beiträge 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

     

    • Danke 1
  2. 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.  


     

    • Like 1
    • Danke 2
  3. 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. 😉

     

    • Like 2
    • Danke 3
  4. 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?

    • Like 2
  5. 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? 

    • Danke 1
  6. 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.

    • Like 3
  7. 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:
    image.thumb.png.2f579779cb0173354d8c993772900894.png

    So sieht es bei dem betroffenen DSAB aus:
    image.thumb.png.7bf3b4b0183dbcff4fe1296085361283.png

     

    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?

  8. 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

    • Like 1
  9. 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:

    image.thumb.png.fbd788d68a4bd0def114a8c9e040a583.png

    Die nachfolgenden Bausteine werden jeweils deaktiviert, wenn die Funktion des Technikers nicht ausgewählt wurde.

    • Like 1
  10. 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.

  11. 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"...

    • Like 5
    • Danke 1
  12. 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...

  13. 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.
    image.png.8bebfbf56bc09d7e6a14519aa64a6600.png
    image.png.fd45df3b9047fada97be0420e79be42a.png

     

    Hat jemand eine Idee, wie ich abfragen kann, ob überhaupt ein Eintrag in der Wiederholungsgruppe erstellt wurde?

    VIELEN DANK im Voraus

  14. 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:
    image.png.ae7d79b0e85a4e92c39676748b2c90ca.png
    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:
    image.png.1fa2e09d575251b3534f2a5180761a94.png

    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?

  15. 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. 😉

  16. 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:

    image.png.8a7157a51f7fb717ee2ba194fdf6c045.png

    image.png.2f24629100a518f372930cc395e291b0.png

    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

     

    • Danke 4
  17. 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. 😉

    • Like 2
×
×
  • Neu erstellen...