VBA code in Outlook voor openen scherm 'opslaan als'

Status
Niet open voor verdere reacties.

ADvH

Gebruiker
Lid geworden
5 apr 2018
Berichten
39
Beste allemaal,

Ik zoek de code voor het openen van een scherm 'opslaan als' in vba voor outlook. De code is bedoeld om via een sneltoets een macro te activeren om de huidige geselecteerde mail op te slaan in een zelf te kiezen map op de server. In Excel is de code daarvoor: application.GetSaveAsFilename. Helaas werkt dat niet in Outlook.....

Ik hoor graag van iemand van u,

Vriendelijke groet Albert
 
Deze functie kan je gebruiken voor het selecteren van de map waar de mail opgeslagen moet worden:

Code:
Function BrowseForFolder(Optional OpenAt As String) As String
    Dim ShellApp As Object
    
    Set ShellApp = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "Selecteer een map", 0, OpenAt)
    
    On Error Resume Next
    BrowseForFolder = ShellApp.self.Path
    On Error GoTo 0
    
    Select Case Mid(BrowseForFolder, 2, 1)
    Case Is = ":"
        If Left(BrowseForFolder, 1) = ":" Then
            BrowseForFolder = ""
        End If
    Case Is = "\"
        If Not Left(BrowseForFolder, 1) = "\" Then
            BrowseForFolder = ""
        End If
    Case Else
        BrowseForFolder = ""
    End Select
    
ExitFunction:
    
    Set ShellApp = Nothing

End Function

Aanroep: Foldernaam = BrowseForFolder()
 
Laatst bewerkt:
Beste edmoor,

Hartelijk dank voor je antwoord, dat werkt inderdaad. Ik had die ook al gevonden maar bij deze functie krijg ik het namelijk niet voor elkaar om die in een bepaald map te laten 'beginnen' zonder een workaround te programmeren. Is dat ook direct mogelijk? De start van de mapselectie zou moeten beginnen in "\\server\map1\map2".
Ook is het niet mogelijk tijdens het opslaan de bestandsnaam aan te passen vandaar dat ik bij de code Excelvba "Application.GetOpenFilename" terecht gekomen was.(zie bijlage, dit scherm zou voor mij de beste oplossing zijn)

Vriendelijke groet Albert
 

Bijlagen

  • venster opslaan.JPG
    venster opslaan.JPG
    77,4 KB · Weergaven: 83
Outlook heeft dat helaas niet.
Als je diezelfde functionaliteit in Outlook wilt gebruiken kan je in Outlook VBA een Excel object maken en heb je dat allemaal voorhanden via dat object.
 
Laatst bewerkt:
Beste Edmoor,

Aangezien ik alleen in excel VBA programmeer, is dit nieuw voor mij, is onderstaand de manier om excelvba in outlook te gebruiken?
de aanroep van application.getsaveasfilename werkt iig niet. Ik zou erg geholpen zijn met een kleien handreiking in deze.

Sub excelobjectinoutlook()
Dim objOL As Object
Set objOL = CreateObject("Excel.Application")
Application.getsaveasfilename
End Sub

Alvast hartelijk dank.
Groeten Albert
 
Probeer dit eens:
Code:
Sub BestandOpslaan()
    Dim xlApp As Object
    Dim fname
    
    Set xlApp = CreateObject("Excel.Application")
    fname = xlApp.GetSaveAsFilename(InitialFileName:="", FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Opslaan als")
    If fname = False Then Exit Sub
    MsgBox fname
    Set xlApp = Nothing
End Sub

Hoe wil je de mail opslaan?
Als msg bestand?
Als PDF?
Anders?
 
Laatst bewerkt:
Edmoor,

Hartstikke TOP! Nog een klein vraag je. De fileSaveAs actie moet beginnen in \\server\map1\map2. In excel plaats je dan in de regel ervoor een ChDir. In deze constructie wordt dat niet 'overgenomen' maar start telkens in mijn home DIR. is hier ook nog een oplossing voor?

Alvast hartelijk dank

Gr Albert
 
ChDir zal niet gaan, dat werkt alleen op je actieve schijf en zal je eerst ChDrive moeten doen.
Maar omdat je met een UNC pad werkt kan dat ook niet.

Kijk naar het voorbeeld dat ik plaatste, daar staat o.a. dit in:
InitialFileName:=""
Zet daar het gewenste pad tussen de "" tekens.

Dus:
InitialFileName:="\\server\map1\map2"
 
Laatst bewerkt:
Excuus stom van mij!

Het werkt als een tierelier, hartelijk dank!!

Vr Gr Albert
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan