• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Help met VBA

  • Onderwerp starter Onderwerp starter jimk
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jimk

Gebruiker
Lid geworden
13 feb 2024
Berichten
23
Hallo,

Ik heb 2 verschillende knoppen op mijn sheet staan:

knop 1: het aanmaken van een PDF file en deze rechtstreeks opslaan op desktop(dit werkt al)

knop 2: het openen van een e-mail, onderwerp is naam gebasseerd op celwaarde. (dit werkt al)


knop 1: nu heb ik hulp nodig bij het volgende: hoe kan ik toevoegen dat ik handmatig een map kan selecteren waar de PDF opgeslagen moet worden? path = handmatig selecteren.

Sub SaveAsPDF()
Documentnummer = Range("B7")
path = "M:\Windows\Desktop\"
fname = Documentnummer
MsgBox "Opgeslagen als PDF"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ignoreprintareas:=False, Filename:=path & fname

End Sub


knop 2: hoe zorg ik ervoor dat ik de sheet (zoals knop 1 als PDF) als bijlage in de mail word toegevoegd?

Sub SendMailFromExcel()
Dim OutApp As Object, OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
.To = Range("B10").Value
.Subject = Range("B7").Value
.Display 'optional
'.Send 'uncomment to send
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

hopelijk kan iemand mij hierbij helpen?

alvast bedankt!
 
1. plaats een voorbeeldbestandje
2. plaats uw code tussen code tags
 
1. Zet deze functie in een module:
Code:
Function KiesMap() As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = "C:\"
        .Title = "Kies een map"
        .ButtonName = .Title
        .Show
        If .SelectedItems.Count > 0 Then
            KiesMap = .SelectedItems(1)
        End If
    End With
End Function
Een map kies je dan met: Pad = KiesMap()

2. Dat kan met dit in de With Outmail:
Code:
.Attachment = "locatie en naam van je bestand." 'Mag ook een variabele zijn uiteraard.
 
Laatst bewerkt:
Waarom dit?

Wat is er mis met mijn antwoorden in #3?
Daar staat precies wat je moet doen.
 
Excuus, ik blijk iets fout te doen waardoor het gewoon niet werkend word.
Vandaar dat ik even de nieuwe had aangemaakt maar had ook gewoon in deze verder kunnen gaan.
Bedankt voor het nemen van de moeite om te helpen!
foutje van mijn kant!

De locatie voor het opslaan is dus verschillend per persoon.
En het opslaan van de PDF gebeurd nu dus wel waar de persoon het bestand op wilt slaan.
Als ik dus het bovenstaande zou invoeren in de code moet ik voor elke persoon dan toch een andere locatie schrijven?

Of begrijp ik het nu helemaal verkeerd ( ben lerende ).

nogmaals excuus voor de nieuwe post!
 
De code in #3 vraagt juist waar de PDF moet worden opgeslagen.
 
Die heb ik nu werkend inderdaad!

Alleen mijn tweede vraag was dus:

Hoe kan ik ervoor zorgen dat in de code van de Mail de attachment dus ook handmatig gekozen kan worden en worden toegevoegd als bijlage?
 
Dat kan met een extra functie in een Module:
Code:
Function KiesBestand() As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Selecteer een bestand"
        .Filters.Clear
        .Filters.Add "PDF bestanden", "*.pdf"
        If .Show = True Then
            KiesBestand = .SelectedItems(1)
        End If
    End With
End Function
Die gebruik je dan zo:
Code:
PDF = KiesBestand()
En voeg je zo aan de mail toe, in de With OutMail:
Code:
.Attachments.Add PDF
(Was fout in #3)
 
Laatst bewerkt:
Voor je gemak verwerkt in je bestand:
 

Bijlagen

Vermjd redundantie:
CSS:
Sub M_snb()
  sn=range("B7:B10")

   with application.filedialog(4)
     if .show then sn(2,1)= .selecteditems(1) & "\" & sn(1,1)
  end with
  activesheet.exportasfixedformat 0, sn(2,1)

  with CreateObject("Outlook.Application").CreateItem(0)
     .To = sn(4,1)
     .Subject = sn(1,1)
     .attachments.add sn(2,1)
     .Send
   End With
End Sub
 
Laatst bewerkt:
Vermjd redundantie:
CSS:
Sub M_snb()
  sn=range("B7:B10")

   with application.filedialog(4)
     if .show then sn(2,1)= .selecteditems(1) & "\" & sn(1,1)
  end with
  activesheet.exportasfixedformat 0, sn(2,1)

  with CreateObject("Outlook.Application").CreateItem(0)
     .To = sn(4,1)
     .Subject = sn(1,1)
     .attachments.add sn(2,1)
     .Send
   End With
End Sub
Dankjewel,

Op het moment dat ik op de button click met bovenstaande code word ik gestuurd om een map te selecteren maar als ik dan de map selecteer waar ik de PDF file heb opgeslagen krijg ik een foutmelding dat de type niet overeenkomt?
 
Dankjewel, heb ivm blokkade de gehele code in een copy van het werkblad gekopieerd en toen werkte het niet meer xD snap er geen bal meer van
Plaats dan eens het document dat nu niet werkt.
 
Bij deze,

De opslaan button werkt, ik kan een map selecteren naar keuze om mijn PDF in op te slaan.

De verstuur email button werkt niet, krijg ook geen reactie van de knop.

Lees graag wat ik hierin fout doe.
 

Bijlagen

Je hebt het niet gedaan zoals in het bestand in #9.
Daar staan 2 Modules in.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan