Thema Datum  Von Nutzer Rating
Antwort
13.11.2017 10:49:48 Nase
NotSolved
13.11.2017 11:31:14 SJ
NotSolved
13.11.2017 12:00:09 Gast86187
NotSolved
13.11.2017 12:01:36 Nase
NotSolved
13.11.2017 12:40:30 SJ
NotSolved
13.11.2017 12:45:38 Nase
NotSolved
13.11.2017 13:00:06 SJ
NotSolved
Blau makro anpassen auf 64bit
30.11.2017 15:35:55 Nase
NotSolved
06.12.2017 09:22:10 Nase
NotSolved
06.12.2017 19:23:59 SJ
NotSolved

Ansicht des Beitrags:
Von:
Nase
Datum:
30.11.2017 15:35:55
Views:
605
Rating: Antwort:
  Ja
Thema:
makro anpassen auf 64bit

Hallo,

ich nochmal.

Habe jetz nochmal versucht meinmakro anzupassen. geht leider immer noch nicht. (Bringt keine fehlermeldung, macht einfach garnix).

Könnte sich eventuell mal jemand das makro anschauen und mir sagen wo ich was anpasasen muss. Und bitte keine Links zu "Erklär-Seiten" posten. Da hab ich mir schon einige durchgelesen. Am ende ist es dann aber doch nur fach-Chinesisch für mich.

Private Const EXM_OPT_FILENAME_BUILD As String = "em_<DATE>_<SUBJECT>"
Private Const EXM_OPT_CLEANSUBJECT_REGEX As String = "RE:\s|Re:\s|AW:\s|FW:\s|WG:\s|SV:\s|Antwort:\s"
Private Const EXM_OPT_FILENAME_DATEFORMAT As String = "mmdd"
Private Const MAX_PATH = 260


 
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_EXPLORER = &H80000
Private Const OFN_EXTENSIONDIFFERENT = &H400&
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_HIDEREADONLY = &H4&
Private Const OFN_LONGNAMES = &H200000
Private Const OFN_NOCHANGEDIR = &H8&
Private Const OFN_NODEREFERENCELINKS = &H100000
Private Const OFN_NOLONGNAMES = &H40000
Private Const OFN_NONETWORKBUTTON = &H20000
Private Const OFN_NOTESTFILECREATE = &H10000
Private Const OFN_OVERWRITEPROMPT = &H2&
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_READONLY = &H1
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHAREWARN = 0
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHOWHELP = &H10
Private Const OFS_MAXPATHNAME = 128
 
Private Declare PtrSafe Function GetSaveFileName Lib "comdlg32" _
  Alias "GetSaveFileNameA" ( _
  lpOpenfilename As OpenFilename) As LongPtr
 
Private Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32" () As Integer
 
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr

Private Type OpenFilename
  lStructSize As LongPtr
  hWndOwner As LongPtr
  hInstance As Long
  lpstrFilter As String
  lpstrCustomFilter As String
  nMaxCustFilter As Long
  nFilterIndex As Long
  lpstrFile As String
  nMaxFile As Long
  lpstrFileTitle As String
  nMaxFileTitle As Long
  lpstrInitialDir As String
  lpstrTitle As String
  Flags As Long
  nFileOffset As Integer
  nFileExtension As Integer
  lpstrDefExt As String
  lCustData As Long
  lpfnHook As LongPtr
  lpTemplateName As String
End Type


Public Sub Speichern_unter_EIN(MainPath As String)

    Dim myExplorer As Outlook.Explorer
    Dim myfolder As Outlook.MAPIFolder
    
    Set myExplorer = Application.ActiveExplorer
    Set myfolder = myExplorer.CurrentFolder

End Sub

Public Sub Speichern_unter(MainPath As String)

    Dim myExplorer As Outlook.Explorer
    Dim myfolder As Outlook.MAPIFolder
    Dim myItem As Object
    Dim olSelection As Selection

    Dim myMailItem As MailItem
    Dim strDate As String
    Dim strSender As String
    Dim strReceiver As String
    Dim strSubject As String
    Dim strFinalFileName As String
    Dim strFullPath As String
    
    Set myExplorer = Application.ActiveExplorer
    Set myfolder = myExplorer.CurrentFolder
    If myfolder Is Nothing Then Error 5001
    If Not myfolder.DefaultItemType = olMailItem Then GoTo ExitScript

    If myExplorer.Selection.Count > 1 Then
        MsgBox "Bitte nur eine E-Mail auswehlen"
        GoTo ExitScript
    End If
          
    If myExplorer.Selection.Count = 0 Then
        MsgBox "Bitte eine E-Mail auswehlen"
        GoTo ExitScript
    End If

    Set olSelection = myExplorer.Selection
    For Each myItem In olSelection
        If TypeOf myItem Is MailItem Then Set myMailItem = myItem
        
        strDate = Format(myMailItem.ReceivedTime, EXM_OPT_FILENAME_DATEFORMAT)
        strSender = myMailItem.SenderName
        strReceiver = myMailItem.To
        If InStr(strReceiver, ";") > 0 Then strReceiver = Left(strReceiver, InStr(strReceiver, ";") - 1)
        strSubject = myMailItem.Subject
        strFinalFileName = EXM_OPT_FILENAME_BUILD
        strFinalFileName = Replace(strFinalFileName, "<DATE>", strDate)
        strFinalFileName = Replace(strFinalFileName, "<SENDER>", strSender)
        strFinalFileName = Replace(strFinalFileName, "<RECEIVER>", strReceiver)
        strFinalFileName = Replace(strFinalFileName, "<SUBJECT>", strSubject)
        strFinalFileName = CleanString(strFinalFileName)
        If Left(strFinalFileName, 15) = "ERROR_OCCURRED:" Then
            strErrorMsg = Mid(strFinalFileName, 16, 9999)
            Error 1003
        End If
        strFinalFileName = IIf(Len(strFinalFileName) > 251, Left(strFinalFileName, 251), strFinalFileName)

        Flt$ = "Outlook Nachrichtenformat (.msg)|*.msg|"
        FName$ = GetSaveName(Flt$, "msg", MainPath, strFinalFileName)



        If FName$ = "" Then
            GoTo ExitScript
        Else
            myMailItem.SaveAs FName$, olMSG
        End If
       
        myMailItem.Categories = "gespeichert"
        myMailItem.Save
   
    Next

ExitScript:

End Sub

Private Function CleanString(strData As String) As String

    Const PROCNAME As String = "CleanString"

    On Error GoTo ErrorHandler

    Dim objRegExp As Object
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True

    objRegExp.Pattern = EXM_OPT_CLEANSUBJECT_REGEX
    strData = objRegExp.Replace(strData, "")

    strData = Replace(strData, Chr(9), "_")
    strData = Replace(strData, Chr(10), "_")
    strData = Replace(strData, Chr(13), "_")
    objRegExp.Pattern = "[/\\*]"
    strData = objRegExp.Replace(strData, "-")
    objRegExp.Pattern = "[""]"
    strData = objRegExp.Replace(strData, "'")
    objRegExp.Pattern = "[:?<>\|]"
    strData = objRegExp.Replace(strData, "")
    
    objRegExp.Pattern = "\s+"
    strData = objRegExp.Replace(strData, " ")
    objRegExp.Pattern = "_+"
    strData = objRegExp.Replace(strData, "_")
    objRegExp.Pattern = "-+"
    strData = objRegExp.Replace(strData, "-")
    objRegExp.Pattern = "'+"
    strData = objRegExp.Replace(strData, "'")
            
    strData = Trim(strData)
    
    CleanString = strData
  
  
ExitScript:
    Exit Function
ErrorHandler:
    CleanString = "ERROR_OCCURRED:" & "Error #" & Err & ": " & Error$ & " (Procedure: " & PROCNAME & ")"
    Resume ExitScript
End Function

Private Function PrepareFilter(Flt$) As String
  Const O$ = "|"
  Dim Temp$
  Dim i As Integer
  Temp$ = Flt$
  i = 1
  Do While InStr(i, Flt$, O$) <> 0
    PrepareFilter = PrepareFilter + _
      Mid(Temp$, i, InStr(i, Temp$, O$) - i) + vbNullChar
    i = InStr(i, Temp$, O$) + Len(O$)
  Loop
  PrepareFilter = PrepareFilter + _
    Right(Temp$, Len(Temp$) - i + 1) + vbNullChar
End Function
 
Public Function GetSaveName(ByVal Filter$, ByVal DefExt$, ByVal InitialDir$, ByVal InitialName$) As String
 
  Dim OFN As OpenFilename
  Dim Temp$
  Dim N As Integer
 
  With OFN
    .lStructSize = Len(OFN)
    .hWndOwner = GetActiveWindow()
    .lpstrFilter = PrepareFilter(Filter$)
    .lpstrFile = InitialName$ & String$(700, vbNullChar)
    .nMaxFile = 700
    .lpstrFileTitle = String$(MAX_PATH, vbNullChar)
    .nMaxFileTitle = MAX_PATH
    .lpstrInitialDir = InitialDir$
    .lpstrTitle = "Speichern unter"
    .Flags = OFN_EXTENSIONDIFFERENT Or _
      OFN_NOCHANGEDIR Or OFN_OVERWRITEPROMPT _
      Or OFN_HIDEREADONLY
    .lpstrDefExt = DefExt$
  End With
 
  If GetSaveFileName(OFN) Then
    Temp$ = OFN.lpstrFile
    N = InStr(Temp$, vbNullChar)
    If N > 1 Then
      GetSaveName = Left$(Temp$, N - 1)
    Else
      GetSaveName = ""
    End If
  Else
    GetSaveName = ""
  End If


End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
13.11.2017 10:49:48 Nase
NotSolved
13.11.2017 11:31:14 SJ
NotSolved
13.11.2017 12:00:09 Gast86187
NotSolved
13.11.2017 12:01:36 Nase
NotSolved
13.11.2017 12:40:30 SJ
NotSolved
13.11.2017 12:45:38 Nase
NotSolved
13.11.2017 13:00:06 SJ
NotSolved
Blau makro anpassen auf 64bit
30.11.2017 15:35:55 Nase
NotSolved
06.12.2017 09:22:10 Nase
NotSolved
06.12.2017 19:23:59 SJ
NotSolved