Snooty
Commodore
- Registriert
- Dez. 2012
- Beiträge
- 4.484
Hio,
ich möchte in Outlook bei Mails von Kinoreservierungen den Inhalt auslesen und bestimmte Strings (Uhrzeit, Kinofilm etc.) in den Betreff übernehmen.
Die Mails sind im HTML-Format mit Tabellen.
Ich hab den Inhalt jetzt mal in einer Variablen gespeichert:
Ich hangele mich dann einfach mit "Zeichenzählen" durch den Inhalt um bestimmte Abschnitte zu finden; das klappt soweit auch, was mich zu der Frage bringt: Ist der Inhalt der Mail durch das
Und zweitens: ich komme nicht an das richtige "Stringende" nach der Platzangabe, im Beispiel das Ende von:
Wie komme ich an das letzte Zeichen vor dem
ich möchte in Outlook bei Mails von Kinoreservierungen den Inhalt auslesen und bestimmte Strings (Uhrzeit, Kinofilm etc.) in den Betreff übernehmen.
Die Mails sind im HTML-Format mit Tabellen.
<td><b>Film:</b></td>
<td>Happy Death Day</td>
</tr>
<tr>
<td><b>Kino:</b></td>
<td>UFA - Kristallpalast Dresden</td>
</tr>
<tr>
<td><b>Saal:</b></td>
<td>Kino 3</td>
</tr>
<tr>
<td><b>Datum:</b></td>
<td>24.11.2017</td>
</tr>
<tr>
<td><b>Zeit:</b></td>
<td>19:45</td>
</tr>
<tr>
<!-- <td><b></b></td> -->
<td colspan="2"><b>Reihe / Platz 10 / 13 - 14<br/></b></td>
</tr>
</table>
<p>
Mit freundlichen Grüßen<br>
<i>Ihr UFA - Kristallpalast Dresden</i>
<td>Happy Death Day</td>
</tr>
<tr>
<td><b>Kino:</b></td>
<td>UFA - Kristallpalast Dresden</td>
</tr>
<tr>
<td><b>Saal:</b></td>
<td>Kino 3</td>
</tr>
<tr>
<td><b>Datum:</b></td>
<td>24.11.2017</td>
</tr>
<tr>
<td><b>Zeit:</b></td>
<td>19:45</td>
</tr>
<tr>
<!-- <td><b></b></td> -->
<td colspan="2"><b>Reihe / Platz 10 / 13 - 14<br/></b></td>
</tr>
</table>
<p>
Mit freundlichen Grüßen<br>
<i>Ihr UFA - Kristallpalast Dresden</i>
Ich hab den Inhalt jetzt mal in einer Variablen gespeichert:
sInhalt = obj.Body
Ich hangele mich dann einfach mit "Zeichenzählen" durch den Inhalt um bestimmte Abschnitte zu finden; das klappt soweit auch, was mich zu der Frage bringt: Ist der Inhalt der Mail durch das
sInhalt = obj.Body
automatisch ein simpler String (mit Zeilenumbrüchen)?Und zweitens: ich komme nicht an das richtige "Stringende" nach der Platzangabe, im Beispiel das Ende von:
Reihe / Platz 10 / 13 - 14
. Am Ende klebt dort immer irgendein unsichtbares Zeichen; vermutlich, weil hier eine neue HTML-Tabelle beginnt.Wie komme ich an das letzte Zeichen vor dem
<br/>
in Reihe / Platz 10 / 13 - 14<br/></b></td>
? Je nach Saal und Platz ist die Stringlänge natürlich variabel zwischen 9-12 Zeichen. Es funktioniert zwar auch so den Betreff zu ändern, aber lieber wäre es mir, den String sauber zu schneiden.
PHP:
Public Sub EditSubject()
Dim obj As Object
Dim Sel As Outlook.Selection
Dim DoSave As Boolean
Dim NewSubject As String
Dim sInhaltSplit() As String
Dim i As Integer
Dim iTitelBeginn As Integer, iTitelEnde As Integer
Dim iNummerBeginn As Integer, iNummerEnde As Integer
Dim iSaalBeginn As Integer
Dim iZeitBeginn As Integer
Dim iPlatzBeginn As Integer, iPlatzEnde As Integer
Dim sInhalt As String
Dim sTitel As String, sNummer As String, sSaal As String, sPlatz As String
Dim sNeuerBetreff As String
If TypeOf Application.ActiveWindow Is Outlook.Inspector Then
Set obj = Application.ActiveInspector.CurrentItem
Else
Set Sel = Application.ActiveExplorer.Selection
If Sel.Count Then
Set obj = Sel(1)
DoSave = True
End If
End If
sInhalt = obj.Body
'Titel auslesen
i = InStr(1, sInhalt, "Sie können Ihre Tickets für den Film ")
iTitelBeginn = i + Len("Sie können Ihre Tickets für den Film ")
iTitelEnde = InStr(iTitelBeginn, sInhalt, " am ")
sTitel = Mid(sInhalt, iTitelBeginn, iTitelEnde - iTitelBeginn)
'Abholnummer auslesen
i = InStr(1, sInhalt, "Abholnummer ")
iNummerBeginn = i + Len("Abholnummer ")
iNummerEnde = InStr(iNummerBeginn, sInhalt, " abholen.")
sNummer = Mid(sInhalt, iNummerBeginn, iNummerEnde - iNummerBeginn)
'Kino auslesen
i = InStr(1, sInhalt, "Kino ")
iSaalBeginn = i + Len("Kino ")
sSaal = Mid(sInhalt, iSaalBeginn, 1)
'Zeit auslesen
i = InStr(1, sInhalt, "Zeit:" & Chr(9))
iZeitBeginn = i + Len("Zeit:" & Chr(9))
sZeit = Mid(sInhalt, iZeitBeginn + 1, 5)
'Plätze auslesen
i = InStr(1, sInhalt, "Reihe / ")
iPlatzBeginn = i + Len("Reihe / ") + 7
iPlatzEnde = InStr(iPlatzBeginn, sInhalt, vbCrLf & "Mit freundlichen")
sPlatz = Mid(sInhalt, iPlatzBeginn, iPlatzEnde - iPlatzBeginn)
sPlatz = Replace(sPlatz, " / ", "-")
sPlatz = Replace(sPlatz, " - ", "-")
sNeuerBetreff = sTitel & " - " & sNummer & " - " & sZeit & " - " & sSaal & "-" & sPlatz
If Not obj Is Nothing Then
NewSubject = InputBox("Neuer Betreff:", , sNeuerBetreff)
If NewSubject <> "" Then
obj.Subject = NewSubject
If DoSave Then
obj.Save
End If
End If
End If
End Sub
[/SPOILER]
Zuletzt bearbeitet: