• 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.

macro code aanpassen voor werkblad door te mailen

Status
Niet open voor verdere reacties.

davylenders123

Gebruiker
Lid geworden
20 jun 2010
Berichten
902
Ik heb op de site van ron een code gevonden voor een werkmap door te mailen met lotus notus via excel.

Ik weet echter niet goed waar de mail adressen moeten komen staan .
Kan iemand mij hier mee verder helpen.:confused:

Code:
Option Explicit
 
Sub Send_Sheets_Notes_Email()
 
  'Notes parameter for attaching the Excel files.
  Const EMBED_ATTACHMENT As Long = 1454
 
  'A folder to temporarily store the created Excel files in.
  Const stPath As String = "c:\Attachments"
 
  'The subject for the outgoing e-mails.
  Const stSubject As String = "Weekly report"
 
  'The message in the bodies of the outgoing e-mails.
  Const vaMsg As Variant = "The weekly report as per agreement." & vbCrLf & _
      "Kind regards," & vbCrLf & _
      "Dennis"
 
  'Variable that holds the list of recipients for each worksheet.
  Dim vaRecipients As Variant
 
  'Variable which holds each worksheet's name.
  Dim stFileName As String
 
  'Variables for Notes.
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object
  Dim stAttachment As String
 
  'Variables for Excel.
  Dim wbBook As Workbook
  Dim wsSheet As Worksheet
  Dim lnLastRow As Long
 
  On Error GoTo Error_Handling
 
  Application.ScreenUpdating = False
 
  Set wbBook = ThisWorkbook
 
  'Loop through the collection of worksheets in the workbook.
  For Each wsSheet In wbBook.Worksheets
    With wsSheet
      'Copy the worksheet to a new workbook.
      .Copy
      'Retrieve the worksheet's name.
      stFileName = .Name
    End With
 
    'Create the full path and name of the workbook.
    stAttachment = stPath & "\" & stFileName & ".xls"
 
    'Save and close the temporarily workbook.
    With ActiveWorkbook
      .SaveAs stAttachment
      .Close
    End With
 
    'Retrieve the list of recipients.
    With wsSheet
      lnLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
      vaRecipients = .Range("A1:A" & lnLastRow).Value
    End With
 
    'Instantiate the Lotus Notes COM's Objects.
    Set noSession = CreateObject("Notes.NotesSession")
    Set noDatabase = noSession.GETDATABASE("", "")
 
    'If Lotus Notes is not open then open the mail-part of it.
    If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
 
    'Create the e-mail and add the attachment.
    Set noDocument = noDatabase.CreateDocument
    Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
    Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stAttachment)
 
    'Add values to the created e-mail main properties.
    With noDocument
      .Form = "Memo"
      .SendTo = vaRecipients
      .Subject = stSubject
      .Body = vaMsg
      .SaveMessageOnSend = True
      .PostedDate = Now()
      .Send 0, vaRecipients
    End With
    'Delete the temporarily workbook.
    Kill stAttachment
  Next wsSheet
 
  MsgBox ("The e-mails have successfully been created and distributed."), vbInformation
 
ExitSub:
  'Release objects from memory.
  Set noEmbedObject = Nothing
  Set noAttachment = Nothing
  Set noDocument = Nothing
  Set noDatabase = Nothing
  Set noSession = Nothing
 
  Exit Sub
 
Error_Handling:
  MsgBox "Error number: " & Err.Number & vbNewLine & _
      "Description: " & Err.Description, vbOKOnly
  Resume ExitSub
End Sub
 
Code:
      vaRecipients = .Range("A1:A" & lnLastRow).Value

Deze regel haal de email adressen uit een werkblad
hier kun je ook neer zetten:

Code:
vaRecipients = "email1@mail.nl,email2@mail.nl"

Weet niet zeker of het tussen"" moet staan

Niels
 
Code:
      vaRecipients = .Range("A1:A" & lnLastRow).Value

Deze regel haal de email adressen uit een werkblad
hier kun je ook neer zetten:

Code:
vaRecipients = "email1@mail.nl,email2@mail.nl"

Weet niet zeker of het tussen"" moet staan

Niels

Heb de code zo aangepast en met mijn mail adressen.
Doet alles nu maar ik krijg de mail terug in mijn lotus als niet verzonden.:confused:
 
En deze code wat doet die juist ?

Code:
lnLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

Staat juist boven die van niels
 
Heb een simpeler code gevonden.

Code:
Sub Mail_ActiveSheet()
    Dim wb As Workbook
    Dim strdate As String
    strdate = Format(Now, "dd-mm-yy h-mm-ss")
    Application.ScreenUpdating = False
    ActiveSheet.Copy
    Set wb = ActiveWorkbook
    With wb
        .SaveAs "Part of " & ThisWorkbook.Name & " " & strdate & ".xls"
  ' Vul hier het eMail-adres en het onderwerp in
        [COLOR="darkred"].SendMail "Mijnmail@hotmail.com", "Hier het onderwerp"[/COLOR]        
.ChangeFileAccess xlReadOnly
        Kill .FullName
        .Close False
    End With
    Application.ScreenUpdating = True
End Sub

Maar krijg een foutmelding.
Hij gaat naar het rode gedeelt in de code voor de fout.

Wat is daar verkeerd aan ?

Ik heb al verschillende codes geprobeerd en elke keer zit er weer een fout in als ik de macro activeer :confused: weet niet wat ik elke keer fout doe :o
 
Je hebt misschien een makkelijkere code gevonden maar die werkt niet met lotus notes.
Hierbij een voorbeeld dat je makkelijk aan je situatie aan kan passen.

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


stpath = "C:\data\helpmij" 'locactie waar bijlage staat
stsubject = "hier komt het onderwerp van de mail te staan"
vamsg = "Hier komt de body (tekst) van je mail te staan" 'mailbody voorzien van gegevens
stfilename = "mailvoorbeeld.xlsm" 'Bestandsnaam
stattachment = stpath & "\" & stfilename 'bijlage = bestandlocatie + bestandsnaam
vaRecipients = VBA.Array("Mail1@mail.nl", "mail2@mail.nl") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
End Sub

Niels
 
Je hebt misschien een makkelijkere code gevonden maar die werkt niet met lotus notes.
Hierbij een voorbeeld dat je makkelijk aan je situatie aan kan passen.

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


stpath = "C:\data\helpmij" 'locactie waar bijlage staat
stsubject = "hier komt het onderwerp van de mail te staan"
vamsg = "Hier komt de body (tekst) van je mail te staan" 'mailbody voorzien van gegevens
stfilename = "mailvoorbeeld.xlsm" 'Bestandsnaam
stattachment = stpath & "\" & stfilename 'bijlage = bestandlocatie + bestandsnaam
vaRecipients = VBA.Array("Mail1@mail.nl", "mail2@mail.nl") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
End Sub

Niels

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


stpath = "H:\patricia" 'locactie waar bijlage staat
stsubject = "hier komt het onderwerp van de mail te staan"
vamsg = "Hier komt de body (tekst) van je mail te staan" 'mailbody voorzien van gegevens
stfilename = "mailvoorbeeld.xlsm" 'Bestandsnaam
stattachment = stpath & "\" & stfilename 'bijlage = bestandlocatie + bestandsnaam
vaRecipients = VBA.Array("mijnmail@hotmail.com", "mijnmail2@hotmail.com") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
End Sub

Niels ,

Heb de code van u aangepast naar mijn situatie.
Heb aan gepast wat ik dacht dat ik moest aanpassen.
Maar hij blijft op deze plaats hangen.

Code:
   Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)

Wat doe ik nog verkeerd of wat ben ik vergeten te veranderen. :o
 
Er staat nog iets boven mijn sub in de code vermeld dit is niet voor niks. (heb je in je bestand dit er ook bij staan?

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Bestaat volgend bestand?

Code:
stfilename = "mailvoorbeeld.xlsm" 'Bestandsnaam

Niels
 
Laatst bewerkt:
Ik heb het net nog getest, bij mij werkt het gewoon.
Ik krijg alleen die fout melding als ik die 2 const regels er niet bij heb staan.
 
Er staat nog iets boven mijn sub in de code vermeld dit is niet voor niks. (heb je in je bestand dit er ook bij staan?

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Bestaat volgend bestand?

Code:
stfilename = "mailvoorbeeld.xlsm" 'Bestandsnaam

Niels

De eerste code die staat ik in mijn bestand.
Heb gewoon u eerste code gekopieerd en geplakt.

Moet ik hier de bestandsnaam van het bestand invullen ?
Zoals hieronder.
Het exel bestand noemt uren interim

Code:
stfilename = "uren interim.xlsm" 'Bestandsnaam

Sorry maar ben echt slecht met codes.:o
 
Als ik u code kopieer en plak dan komt er wel een zwart lijntje te staan tussen u 2 eerst code regels en de rest .

Is dit mischien het probleem dan ?
 
Niels,

De foutcode is opgelost .:thumb:
Ik moest eerst het bestand in de juist map zetten.
Had het bestand niet in de map gezet omdat ik dacht dat de macro het bestand eerst in de map zou opslaan.:o

Ik heb nog 2 vraagjes.

1 .Als ik de knop gebruik dan stuurd hij het bestand dat in de map staat maar stuurt hij niet de versie die ik heb openstaan.
Kan er nog een functie worden toegevoegd dat hij eerst het bastand opslaat en dan pas neemt voor te versturen ?

2. Kan er een melding komen dat de mail is verstuurd dat de macro zijn werk heeft gedaan.
Dit is makkelijker.
Het bestand zal door meerder mensen gebruikt worden en dan is het beter dat ze een melding krijgen dat het gelukt is .
 
Niels,

De foutcode is opgelost .:thumb:
Ik moest eerst het bestand in de juist map zetten.
Had het bestand niet in de map gezet omdat ik dacht dat de macro het bestand eerst in de map zou opslaan.:o

Ik heb nog 2 vraagjes.

1 .Als ik de knop gebruik dan stuurd hij het bestand dat in de map staat maar stuurt hij niet de versie die ik heb openstaan.
Kan er nog een functie worden toegevoegd dat hij eerst het bastand opslaat en dan pas neemt voor te versturen ?

2. Kan er een melding komen dat de mail is verstuurd dat de macro zijn werk heeft gedaan.
Dit is makkelijker.
Het bestand zal door meerder mensen gebruikt worden en dan is het beter dat ze een melding krijgen dat het gelukt is .

Niels,

Vraag 2 is ondertussen al opgelost.
Heb er een code voor gevonden op ron's website.

Code:
MsgBox "The e-mail has successfully been created and distributed", vbInformation

Vraag 1 daar vind ik geen oplossing voor.:confused:
 
Bovenaan mail code

Code:
ActiveWorkbook.SaveAs Filename:="pad en bestandsnaam"

Niels
 
Niels,

1000 maal B E D A N K T voor al je hulp hier mee.
Het werkt perfect nu. :D:thumb:

Mischien weet je hier ook nog een laatste oplossing voor ?:)

Zou het zelfde willen doen moet nog een andere bestandje maar dan zou hij het bestandje eerst moeten opslaan met als naam:

naam van bestand gevolgd door de datum die staat in cel a1

vb mailvoorbeeld maandag 28-02-2011
Het mag ook zijn
mailvoorbeeld 28-02-2011

Cel a 1 staat bv: maandag 28/02/2011
 
Laatst bewerkt:
Origineel gepost door Warme bakkertje
Code:
Private Sub CommandButton1_Click()
ActiveSheet.Protect Password:="1230", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveWorkbook.SaveAs Filename:= _
"T:\Mag-Data\Mit pc\davy\uren magazijn\Uren Magazijn " & Format(DateValue([uren!B1]), "dd-mm-yyyy") & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Deze komt uit een topic die je zelf gestart bent.

Niels
 
Laatst bewerkt:
Deze komt uit een topic die je zelf gestart bent.

Miels

Welk stuk van die code moet ik dan juist waar plaasten.
Heb deze 2

Code:
ActiveWorkbook.SaveAs Filename:= _
":H\patricia " & Format(DateValue([uren!B1]), "dd-mm-yyyy") & ".xls" _

Code:
ActiveWorkbook.SaveAs Filename:= "& Format(DateValue([uren!B1]), "dd-mm-yyyy") & ".xls"

al eens geplaats op de plaats van
Code:
ActiveWorkbook.SaveAs Filename:="pad en bestandsnaam"

Maar dan krijg ik een fout code "compileerfout : syntaxifout
 
Het = h: en niet :h :D

verder ben je een "\" vergeten,
zie code

Code:
ActiveWorkbook.SaveAs Filename:=("H:\Patricia" & "\" & Format(DateValue([blad1!A1]), "dd-mm-yyyy") & ".xls")

In een vorige post gaf je aan dat de datum in cel A1 staat, dit heb je ook niet aangepast

Niels
 
Laatst bewerkt:
Het = h: en niet :h :D

verder ben je een "\" vergeten,
zie code

Code:
ActiveWorkbook.SaveAs Filename:=("H:\Patricia" & "\" & Format(DateValue([blad1!A1]), "dd-mm-yyyy") & ".xls")

In een vorige post gaf je aan dat de datum in cel A1 staat, dit heb je ook niet aangepast

Niels

Ja de datum cel is b1 in plaats van a1 sorry voor de foute post.:o

Heb de code aangepast en krijg terug een foutmelding bij
Code:
 Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
:confused:

Hier heel mijn code nog eens.
Heb de xlsm aangepast naar xls omdat het op een excel 2003 versie moet draaien.

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object

ActiveWorkbook.SaveAs Filename:=("H:\Patricia" & "\" & Format(DateValue([uren!B1]), "dd-mm-yyyy") & ".xls")
stpath = "H:\patricia" 'locactie waar bijlage staat
stsubject = "hier komt het onderwerp van de mail te staan"
vamsg = "Hier komt de body (tekst) van je mail te staan" 'mailbody voorzien van gegevens
stfilename = "mailvoorbeeld.xls" 'Bestandsnaam
stattachment = stpath & "\" & stfilename 'bijlage = bestandlocatie + bestandsnaam
vaRecipients = VBA.Array("davylenders@hotmail.com", "lendersdavy@hotmail.com") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
                  
                  MsgBox "De e - mail is correct verstuurd ", vbInformation



End Sub
 
Denk dat er aan deze code

Code:
stpath = "H:\patricia" 'locactie waar bijlage staat
Iets moet worden aangepast.

Want geeft als foutmelding dat hij H:\patricia\mailvoorbeeld.xls not found

Hij zoekt niet naar het bestand dat is opgeslagen met de datum.
En de code slaat ook alleen maar de datum op en niet de naam van het bestand gevolgd door de datum.:confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan