| (Options) - Section |
| Option Public |
| Use "libWord" |
| Use "FileLibrary" |
| |
| Initialize - Section |
| Sub Initialize |
| |
| Dim workspace As New NotesUIWorkspace |
| Dim uidoc As NotesUIDocument |
| Dim doc As NotesDocument |
| Dim rtitem As NotesRichTextItem |
| Dim clsWord As cWord |
| Dim intTitel As Integer |
| Dim idx As Integer |
| Dim intAbbruch As Integer |
| Dim varName As Variant |
| Dim varResult As Variant |
| Dim cFile As CFile |
| Dim strMacro As String |
| Dim strFileName As String |
| Dim arrFiles() As String |
| |
| Const ATTR_READONLY = 1 |
| |
| intAbbruch = 0 |
| Redim arrFiles(0) |
| |
| On Error Goto ErrorHandling |
| |
| Set uidoc = workspace.CurrentDocument |
| Set doc = uidoc.Document |
| |
| 'Extrahieren des allgemeinen Namens aus dem Mail-Absender |
| strMacro = | @Name([CN]; DisplayFrom)| |
| varName = Evaluate(strMacro, doc) |
| 'Messagebox varName(0) |
| |
| 'Wenn im allgm. Namen " enthalten sind, werden sie entfernt |
| If Instr(varName(0), Chr$(34)) > 0 Then |
| strMacro = | @ReplaceSubstring(| & varName(0) & |; @Char(34); "")| |
| varName = Evaluate(strMacro,doc) |
| 'Messagebox varName(0) |
| End If 'If Instr(varName(0), Chr$(34)) > 0 Then |
| |
| 'Austausch der : in . bei Uhrzeit |
| strMacro = | @ReplaceSubstring("| & doc.DisplayDate(0) & |"; ":"; ".")| |
| varResult = Evaluate(strMacro) |
| 'Austausch des Leerzeichens in _ |
| strMacro = | @ReplaceSubstring("| & varResult(0) & |"; " "; "_")| |
| varResult = Evaluate(strMacro) |
| |
| 'Abfrage des Verzeichnisses und des Dateinamens |
| Set cFile = New cFile |
| cFile.DefaultDir = "" |
| cFile.DefaultFilename = varName(0) & " " & varResult(0) 'Vorgabedateiname ist der allg. Name des Senders und Empfangsdatum |
| cFile.Title = "Mail-Export" |
| cFile.Filter = "Word-Dokument (*.doc)" & Chr$(0) & "*.doc" & Chr$(0) & "Alle Dateien (*.*)" & Chr$(0) & "*.*" & Chr$(0) |
| cFile.FilterIndex = 1 |
| |
| result = cFile.FileSaveDlg |
| If result = 0 Then |
| Messagebox "Der Export wurde abgegrochen.", 64, "Mail-Export" |
| Exit Sub |
| End If 'If result = 0 Then |
| |
| While Dir$(cFile.Filename, 0) <> "" |
| Messagebox "Der angegebene Dateiname ist bereits vorhanden." & Chr$(10) & "Bitte geben Sie einen anderen Dateinamen ein.", 48, "Mail-Export" |
| result = cFile.FileSaveDlg |
| If result = 0 Then |
| Messagebox "Der Export wurde abgegrochen.", 64, "Mail-Export" |
| Exit Sub |
| End If 'If result = 0 Then |
| Wend 'While Dir$(cFile.Filename, 0) <> "" |
| |
| 'Neue Instanz der Klasse cWord |
| Set clsWord = New cWord |
| 'Neues Dokument auf Basis der Vorlage erstellen |
| Call clsWord.CreateNewDoc("Normal") |
| 'Formatiertes Einfügen der Mail-Header Infos |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| Call clsWord.Insert("Mail von: ") |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| Call clsWord.Insert(doc.DisplayFrom(0)) |
| Call clsWord.Newline(1) |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| If Isdate(doc.DeliveredDate(0)) Then |
| Call clsWord.Insert("Mail eingegangen am: ") |
| Else |
| Call clsWord.Insert("Mail gesendet am: ") |
| End If 'If Isdate(doc.DeliveredDate(0)) Then |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| Call clsWord.Insert(Cstr(doc.DisplayDate(0))) |
| Call clsWord.Newline(2) |
| Call clsWord.SetTab(2.5) |
| |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| Call clsWord.Insert("An: ") |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| strMacro = | @Name([Abbreviate]; SendTo)| |
| varName = Evaluate(strMacro, doc) |
| For idx = 0 To Ubound(varName) |
| Call clsWord.Insert(Chr$(9) & varName(idx)) |
| Call clsWord.Newline(1) |
| Next 'For idx = 0 To Ubound(varName) |
| |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| Call clsWord.Insert("Kopie: ") |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| strMacro = | @Name([Abbreviate]; CopyTo)| |
| varName = Evaluate(strMacro, doc) |
| For idx = 0 To Ubound(varName) |
| Call clsWord.Insert(Chr$(9) & varName(idx)) |
| Call clsWord.Newline(1) |
| Next 'For idx = 0 To Ubound(varName) |
| |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| Call clsWord.Insert("Bindkopie: ") |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| strMacro = | @Name([Abbreviate]; BlindCopyTo)| |
| varName = Evaluate(strMacro, doc) |
| For idx = 0 To Ubound(varName) |
| Call clsWord.Insert(Chr$(9) & varName(idx)) |
| Call clsWord.Newline(1) |
| Next 'For idx = 0 To Ubound(varName) |
| |
| Call clsWord.Newline(2) |
| |
| Call clsWord.SetFontAttributes("Arial", 10, True, False, False) |
| Call clsWord.Insert("Thema: ") |
| Call clsWord.SetFontAttributes("Arial", 10, False, False, False) |
| Call clsWord.Insert(doc.Subject(0)) |
| Call clsWord.Newline(2) |
| |
| Call clsWord.ClearAllTabs |
| |
| 'einfügen des Mailinhaltes als Text |
| Set rtitem = doc.GetFirstItem( "Body" ) |
| If ( rtitem.Type = RICHTEXT ) Then |
| Call clsWord.Insert(rtitem.GetFormattedText( False, 0 )) |
| End If 'If ( rtitem.Type = RICHTEXT ) Then |
| |
| 'Lösen der Anhänge ins gewählte Verzeichnis und einfügen eines Links in Dokument |
| intTitel = 0 |
| idx = 0 |
| If ( rtitem.Type = RICHTEXT ) Then |
| If xHasDocAttachments(doc) Then |
| Forall o In rtitem.EmbeddedObjects |
| If ( o.Type = EMBED_ATTACHMENT ) Then |
| strFileName = Cstr(cFile.ExtractFilePath(cFile.Filename)) & o.Name |
| While Dir$(strFileName, 0) <> "" And intAbbruch <> 1 |
| varResult = workspace.Prompt( PROMPT_OKCANCELEDIT, "Mail-Export", "Eine Datei mit diesem Namen ist bereits vorhanden." & Chr$(10) &_ |
| "Bitte vergeben Sie einen anderen Namen", strFileName, "") |
| If Isempty(varResult) Then |
| intAbbruch = 1 |
| Else |
| strFileName = Cstr(varResult) |
| End If 'If Isempty(varResult) Then |
| Wend 'Do While Dir$(strFileName, 0) <> "" |
| If intAbbruch Then Exit Forall |
| |
| If intTitel = 0 Then |
| Call clsWord.Newline(2) |
| Call clsWord.Insert("Es sind folgende Dateianhänge vorhanden:") |
| Call clsWord.Newline(1) |
| intTitel = 1 |
| End If 'If intTitel = 0 Then |
| Redim Preserve arrFiles(idx) |
| arrFiles(idx) = strFileName |
| idx = idx + 1 |
| Call clsWord.InsertLink(strFileName, Cstr(cFile.ExtractFileName(strFileName))) |
| Call clsWord.Newline(1) |
| 'Dateianhang lösen |
| Call o.ExtractFile (strFileName) |
| Setfileattr strFileName , ATTR_READONLY |
| End If |
| End Forall |
| End If 'If xHasDocAttachments(doc) Then |
| End If 'If ( rtitem.Type = RICHTEXT ) Then |
| |
| If intAbbruch Then |
| 'Export abgebrochen |
| 'Word wird ohne zu speichern beendet |
| Call clsWord.CloseWord |
| Delete clsWord |
| 'Alle bisher gelösten Dateien werden gelöscht |
| For idx = 0 To Ubound(arrFiles) |
| If arrFiles(idx) <> "" Then |
| Setfileattr arrFiles(idx) , ATTR_NORMAL |
| Kill arrFiles(idx) |
| End If 'If arrFiles(idx) <> "" Then |
| Next 'For idx = 0 To Ubound(arrFiles) |
| Messagebox "Der Export wurde abgegrochen.", 64, "Mail-Export" |
| Else |
| 'Worddokument wird gespeichert und Word wird beendet |
| Call clsWord.SaveDoc(Cstr(cFile.Filename)) |
| Call clsWord.CloseWord |
| Delete clsWord |
| |
| 'Setzen des Schreibschutzes auf Word-DAtei |
| Setfileattr Cstr(cFile.Filename), ATTR_READONLY |
| |
| Messagebox "Das Mail wurde erfolgreich exportiert.", 64, "Mail-Export" |
| End If 'If intAbbruch Then |
| |
| Exit Sub |
| |
| ErrorHandling: |
| Messagebox "Das Mail konnte nicht exportiert werden." + Chr$(13) + "Fehler: " + Str$(Err) + " -> '" + Error$ + _ |
| "' in Zeile " + Str$(Erl) , 16, "Mail-Export" |
| |
| 'Aufräumen |
| If Not (clsWord Is Nothing) Then |
| Call clsWord.CloseWord |
| Delete clsWord |
| End If 'If Not (clsWord Is Nothing) Then |
| |
| Exit Sub |
| |
| End Sub |
| |
| |
| Function xHasDocAttachments(doc As NotesDocument) As Integer |
| |
| Dim vEval As Variant |
| vEval = Evaluate("@Attachments", doc) |
| If vEval(0) = 0 Then |
| xHasDocAttachments = False |
| Else |
| xHasDocAttachments = True |
| End If |
| |
| End Function |