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

Een macro die na een vraag een pdf maakt van de gevraagde gegevens en door e-mailt

  • Onderwerp starter Onderwerp starter MrBob
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Ik ben er nog steeds mee aan het knutselen want ook voor mij is het een leerweg. ;)

Ik wil graag dat de tekst in de email automatisch word ingevuld. maar hoe plaats ik het weeknummer in de tekst van de email ?

Code:
.HTMLBody = StrBody & "Beste,<br><br>Dit is de planning van week (hier het weeknummer), graag doorvoeren<br><br>Mvg," & .HTMLBody

In c00 word het weeknummer tijdens de macro in opgeslagen.

@Vena, je code werkt nog het beste van allemaal voor mijn situatie. Het rare is wel dat de code de eerste keer niet werkt. dus als ik het werkblad voorzie van jouw code en opstart krijg ik error van onderstaande regel:

Fout 91 tijdens uitvoering: Objectvariabele of blokvariabele With is niet ingesteld

Code:
Set d = Union(Columns("A:E"), Columns(Blad1.Rows(2).Find("Week " & Format(c00, "00")).Column).Resize(, 7))

Voer ik eerst de code een keer uit van SjonR dan de jouwe werkt jouw code ineens wel en blijft hij ook werken ?!?! Heb je de sheet compleet nodig dan hoor ik het wel van je.
 
Laatst bewerkt:
Ik zie echt geen voordeel van die htmlbody

Code:
Sub M_snb()
    y=Application.WeekNum(Date, 21)

    Blad1.Cells(1, 6).Resize(, 7 * (y - 2)).EntireColumn.Hidden = True
    Blad1.Cells(1).Resize(15, 5 + 7 * (y - 1)).ExportAsFixedFormat 0, "G:\OF\voorbeeld.pdf"
    Blad1.columns.hidden=false

    With CreateObject("outlook.application").createitem(0)
      .Subject = "week " & y
      .to = "iemandanders@gmail.com"
      .Body = replace("Beste, ~~Dit is de planning van " & .subject & ", graag doorvoeren~~Mvg.","~",vblf)
      .attachments.Add "G:\OF\voorbeeld.pdf"
      .Send
    End With
End Sub
 
Laatst bewerkt:
@snb je hebt helemaal gelijk en je code werkt. :thumb:

Staat alleen nog de vraag waarom ik een foutmelding krijg Fout 91 zoals hierboven beschreven staat bij de volgende Macro ? Run ik eerst een andere macro dan gaat deze macro ook werken zonder foutmeldingen. Dus wat mist er ?

Code:
Sub VenA()
  c00 = InputBox("Welk weeknummer wil je verzenden ?")
  If IsNumeric(c00) And c00 < 53 Then
    Set d = Union(Columns("A:E"), Columns(Blad1.Rows(2).Find("Week " & Format(c00, "00")).Column).Resize(, 7))
    d.Copy Blad2.[A1]
    c01 = "E:\Temp\Week " & Format(c00, "00") & ".pdf"
    Blad2.UsedRange.ExportAsFixedFormat 0, c01
  End If
  With CreateObject("outlook.application").createitem(0)
      .Subject = "Planning week " & c00
      .to = "iemandanders@gmail.com"
      .attachments.Add c01
      .Body = Replace("Beste, ~~Dit is de planning van " & .Subject & ", graag doorvoeren~~Mvg.", "~", vbLf)
      .display '.send
    End With
  Kill c01
End Sub
 
Bestudeer en experimenteer met 'Union'
 
Ben al een tijdje bezig maar dat Union zegt me gewoon niets. Ben nog echt een groentje wat dat betreft. :o Hopelijk kunnen jullie me verder helpen want ik weet niet eens waarnaar te zoeken. :(
 
VBEditor / markeer 'union' in de code / F1
 
Deze inhoud is niet beschikbaar in uw taal, maar wel in het Engels, en dan houd het op, lege pagina. :D Heb echt geen idee. :shocked:
 
Je kan de code wat verder uitschrijven en er dan met <F8> doorheen wandelen.

Code:
Sub VenA()
Dim f As Range, d As Range
  c00 = InputBox("Geef hier het weeknummer op")
  If IsNumeric(c00) And c00 < 53 Then
    Set f = Sheets("Blad1").Rows(2).Find("Week " & Format(c00, "00"))
    If Not f Is Nothing Then
      Set d = Union(Columns("A:E"), Columns(f.Column).Resize(, 7))
      If Not d Is Nothing Then
        d.Copy Sheets("Email").[A1]
        c01 = "E:\Temp\Week " & Format(c00, "00") & ".pdf"
        Sheets("Email").UsedRange.ExportAsFixedFormat 0, c01
        With CreateObject("outlook.application").createitem(0)
          .Subject = "week " & c00
          .to = "iemandanders@gmail.com"
          .attachments.Add c01
          .display '.send
        End With
        Kill c01
      End If
    End If
  End If
End Sub
 
Deze laatste code werkt niet. Hij vraagt alleen om weeknummer en doet verder niets meer. Ik zie intussen door de bomen het bos niet meer, dus wie heeft de werkende code ?
 
Al eens met <F8> door de code gelopen? Heb je het locals window opstaan en zie je welke waarden de variabelen krijgen? Er staat hier voldoende werkende code.
 
:confused: Locals windows :confused: waar kan ik die vinden ?

Ik wil het best leren allemaal maar het is nu voor mij abacadabra allemaal en misschien is het makkelijker om de code werkend aan te leveren want ik ben bang dat ik er zelf nooit achter kom daar doe ik simpelweg te weinig in excel voor.

Ik heb in Vba editor op f8 gedrukt met je laatste code en die code vraagt om weeknummer en schiet dan ineens door naar end if zonder iets te doen met tussen liggende regels.
 
Inderdaad die werkt maar vraagt niet om week nummer ?!
 
Ook met die wens is 99,99% van de code gereed.
Als het opnemen van een inputbox een probleem is kun je beter eerst met de basisbeginselen van VBA beginnen.

Wijkt de week die je wil invoeren vaak af van de huidige week of de volgende week ?
 
in principe niet, maar het kan wel voorkomen. Vandaar dat ik graag de vraag stel welke week. Maar meestal is het de volgende week die ik wil verzenden. En ik wil mijn eigen er ook verder in excel gaan verdiepen maar wil eerst deze code afhebben want dan kan ik mijn projectje afmaken waar ik mee bezig ben. Dus hopelijk willen jullie mij hier bij helpen. ;)
 
grom grom grom al 4 dagen aan het *****n zonder resultaat. de meest gekke foutmeldingen gezien !!

Hopelijk kunnen jullie de werkende code online zetten want door te gaan zwijgen leer ik helemaal niets en is de lol er snel af. :confused:

Die Union mag volgens mij ook een selection zijn maar krijg het op een of andere manier niet werkend, echt frustrerend !

Code:
Sub VenA()
  c00 = InputBox("Welk weeknummer wil je verzenden ?")
  If IsNumeric(c00) And c00 < 53 Then
    Set d = Union(Columns("A:E"), Columns(Blad1.Rows(2).Find("Week " & Format(c00, "00")).Column).Resize(, 7))
    d.Copy Blad2.[A1]
    c01 = "E:\Temp\Week " & Format(c00, "00") & ".pdf"
    Blad2.UsedRange.ExportAsFixedFormat 0, c01
  End If
  With CreateObject("outlook.application").createitem(0)
      .Subject = "Planning week " & c00
      .to = "iemandanders@gmail.com"
      .attachments.Add c01
      .Body = Replace("Beste, ~~Dit is de planning van " & .Subject & ", graag doorvoeren~~Mvg.", "~", vbLf)
      .display '.send
    End With
  Kill c01
End Sub
 
De week wordt niet gevonden.

Probeer het zo eens
Code:
Set d = Union(Columns("A:E"), Columns(Blad1.Rows(2).Find("Week " & Format(c00, "00"), , xlValues, xlWhole, , , , True).Column).Resize(, 7))
 
Yes dat werkt inderdaad een stuk beter en kan ik verder met mijn werkstukje, Finally 100% werkende code. Bedankt alle. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan