2017-09-07 3 views
0

ich nichts über VBA wissen, konnte ich ein sehr einfaches Makro zusammen stellen, die mich zu SaveAs E-Mails über Regeln erlaubt:Outlook Makro intermittierenden Berechtigungsfehler

Sub sTXT(myMail As Outlook.MailItem) 
strname = myMail.Subject 
myMail.SaveAs "C:\Users\ss127w\Box Sync\maildump\" & strname & ".txt", OLTXT 
End Sub 
Sub Test() 
    Call sTXT(ActiveExplorer.Selection(1)) 
End Sub 

Dies wurde einwandfrei für viele, viele Monate arbeiten, ich habe die gleichen 2 Arten von E-Mails exportiert, die ohne Probleme eingehen. Nun, heute habe ich versucht, eine neue Regel für eine andere E-Mail einrichten und dieses Makro gibt mir einen Berechtigungsfehler:

Outlook cannot complete the save due to a file permission error. 

ich alle Änderungen auch immer an das Makro nicht machen. Ich fing an, das Makro auf zufällig anderen E-Mails zu prüfen und bemerkte, dass es auf einigen und nicht anderen funktioniert.

Jetzt, wenn ich manuell eine SaveAs, ich bin in der Lage, jede E-Mail in den Ordner im Makro definiert.

Ich vermute, dass die Sonderzeichen in der Betreffzeile Probleme verursacht, aber ich habe nicht genug Versuch und Irrtum getan, um wirklich in der Lage zu sein, dies zu schließen (die Betreffzeile hat einen Doppelpunkt (:) drin).

Lassen Sie mich wissen, was Sie denken.

Antwort

1

I suspect that the special characters in the subject line is causing issues, but I haven't done enough trial and error to really be able to conclude this (the subject line has a colon (:) in it).

Sie haben Recht - der Doppelpunkt verursacht Probleme.

Wenn Sie Windows Explorer versuchen Sie es mit einem Dateinamen bearbeiten Sie einen Doppelpunkt enthalten, Sie erhalten die Meldung:

A file name can't contain any of the following characters: \/: * ? " < > |

Das Beste, was alle diese Zeichen in Ihrem Thema zu einem anderen Charakter umwandeln zu tun, z.B statt

strname = myMail.Subject 

könnten Sie

strname = Replace(myMail.Subject, ":", "_") 

verwenden, um alle Doppelpunkte zu ändern, anstatt zu unterstreichen.

Oder Sie könnten für die volle

strname = Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(_ 
      Replace(myMail.Subject, "\", "_"), _ 
            "/", "_"), _ 
            ":", "_"), _ 
            "*", "_"), _ 
            "?", "_"), _ 
            """", "_"), _ 
            "<", "_"), _ 
            ">", "_"), _ 
            "|", "_") 

gehen, wenn Sie wollen. Offensichtlich liegt die Wahl des Ersatzcharakters bei dir - du könntest sie sogar durch "" ersetzen, wenn du nur den Charakter loswerden willst.

+0

Das hat es getan, vielen Dank. – 528fb