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

Mail met uur versturen

Status
Niet open voor verdere reacties.

ikselle

Gebruiker
Lid geworden
25 mei 2009
Berichten
198
Beste excelfanaten,
Ik tracht per mail een aantal gegevens door te sturen. De bedoeling is de gebruiker een userform te laten invullen en deze gegevens vervolgens naar een mailadres te laten sturen. Hierbij wordt ik met de volgende problemen geconfronteerd :
1)Ik ben er eindelijk in geslaagd d.m.v. de leerrijke site van snb een combolist te vullen met uurgegevens (scheelt een hoop in validatie). Hoe kan ik ervoor zorgen dat er niet steeds vanaf het uur 00.00 gescrold moet worden maar bijv. eerder vanaf 09.00u. ?
2) Hoe kan ik ervoor zorgen dat het uurformaat dat uiteindelijk verschijnt in de mail "uu.mm" is ? Heb vooral op dit laatste probleem reeds langs gezocht en hoop op redding :o Misschien moet er ook rekening mee gehouden worden dat op de ene pc een windows franstalige versie en op de andere een nederlandstalige versie geïnstalleerd werd.
Het is steeds hetzelfde met die datums. :evil:
3) Hoe kan ik er voor zorgen dat de gebruiker de userform niet kan sluiten met het kruisje en er geen achterliggende sheets te zien zijn?

Dank bij voorbaat.
 

Bijlagen

Als je bv de keuzelijst om 9:00 wil laten beginnen dan kan je deze gebruiken.

Code:
ComboBox1.List = [transpose(text((row(37:96)-1)/96,"hh.mm"))]

of als je wel alle tijden beschikbaar wil hebben

Code:
ComboBox1.List = [transpose(text((row(1:96)-1)/96,"hh.mm"))]
ComboBox1.ListIndex = 36

Waarom schrijf je eerst de gegevens naar het werkblad?
Anders is dit voldoende
Code:
Private Sub CommandButton2_Click()
With CreateObject("Outlook.Application").CreateItem(0)
   .To = Me.TxtMailadres
   .Subject = "Uurverzending"
   .HTMLBody = ComboBox1.Value & " |  " & TxtMailadres.Value
   .display
End With
End Sub

Als je niet wil dat het kruisje gebruikt wordt om af te sluiten dan kan je deze proberen.
Code:
Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        MsgBox ("kan niet via kruisje")
        Cancel = True
    End If
End Sub
 
Laatst bewerkt:
Bedankt VenA,
Probleem 1: is opgelost.
Probleem 3: ofwel opteer je dan voor een MsgBox ofwel laat je die eruit maar kan je de userform nergens zodanig aanpassen dat je het kruisje gewoon niet meer ziet?
Probleem 2: ik krijg nu wanneer ik bijvoorbeeld 10.15 kies => 10,15. Daar kan ik mee leven maar indien dit verholpen zou kunnen worden ...
Bedankt
 
Het kruisje kan je volgens mij niet weghalen.

Om van de , een . te maken kan je dit proberen.

Code:
replace(ComboBox1.Value,",",".")
 
De variable binnen de code is reeds "hh.mm". Het gaat ergens verkeerd tussen het schrijven naar het werkblad waar de cel ook geformeteerd is op "hh.mm" en het sturen naar outlook.
 
Zet het in de combobox met dubbele punt.
Code:
ComboBox1.List = [transpose(text((row(1:96)-1)/96,"[COLOR=#ff0000]hh:mm[/COLOR]"))]
Schrijf het weg met dubbele punt als dat nog van toepassing blijft.
Code:
 Sheets(1).Range("A2").Value = Format(ComboBox1.Value, "[COLOR=#ff0000]hh:mm[/COLOR]")
Code:
Sub uur_verzenden()
Dim bericht
bericht = Join(Array(Format(Sheets(1).Range("a2"), "hh:mm"), Sheets(1).Range("a3")), " | ")


   With CreateObject("Outlook.Application").CreateItem(0)
   .To = TxtMailadres.Text
   .Subject = "Uurverzending"
   .Body = bericht
   .display
   End With
End Sub
 
Voor een formulier zonder kruisje en zonder randen:

Code:
Option Explicit
 Private Declare Function FindWindowEx Lib "user32" Alias _
 "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
 ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
 Private Declare Function SetWindowLong Lib "user32" Alias _
 "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
 ByVal dwNewLong As Long) As Long
 Private Declare Function DrawMenuBar Lib "user32" ( _
 ByVal hWnd As Long) As Long


 Private Sub CommandButton1_Click()
    Unload Me
 End Sub

 Private Sub UserForm_Initialize()
 Dim lHnd As Long
 lHnd = FindWindowEx(0&, 0&, vbNullString, Me.Caption)
 Call SetWindowLong(lHnd, -16, &H84080080)
 Call DrawMenuBar(lHnd)
 End Sub
 
Harry,
Heb je voorstel opgenomen maar krijg nu foutmelding.
Cobbe,
Bedankt,
Wat een code:shocked: maar werkt perfect.

Het is de eerste keer dat ik excel met outlook tracht te combineren. Kreeg soms een fout bij ".send" maar dit is verholpen door "ON ERROR RESUME NEXT". Ik weet niet wel netjes is maar ... zolang het werkt...

By the way misschien nog een vraagje :
Ik wou graag dit soort userform verspreiden maar ik wil vermijden dat iedereen dit bestand kan gebruiken. Is het mogelijk om het gebruik ervan te limiteren voor de mailadressen eindigend op bijv. @belgacom.be ?
 
Misschien heb je iets niet goed overgenomen?
 

Bijlagen

Harry,
Wanneer ik jouw meegestuurd bestand laat lopen krijg ik bijgevoegd errorbericht en debugscherm.
 

Bijlagen

  • feedback.jpg
    feedback.jpg
    16,5 KB · Weergaven: 27
  • feedback2.jpg
    feedback2.jpg
    44,5 KB · Weergaven: 45
Werk je niet met OutLook?
Het bestand van 20-01-2016 21:55 uur getest, en werkt uitstekend als je beide gegevens invult (daar zou je nog iets aan moeten willen doen).
 
Ja Harry ik denk dat je de vinger op de wonde legt. Was uit het oog verloren dat ik thuis geen outlook maar the Bat gebruik. Sorry voor deze vergetelheid. Blijven wel de vragen :
1) soms na een aantal keer testen (met outlook ;)) krijg ik een foutmelding bij ".to send". Dit blijkt opgelost na het invoegen van "ON ERROR RESUME NEXT". Maar is dit wel volgens de regels van de kunst ?
2) kan ik er voor zorgen dat enkel vanaf mailadressen eindigend op bijv. "@hotmail.com" dit uurverzendbestandje gebruikt kan worden ?
Misschien moet ik hiervoor een nieuw draadje maken.
Erg bedankt Harry en Cobbe. Fijn dat jullie mensen willen helpen.
 
'To Send' bestaat niet, het is:

.To = "Naam"
.Send 'Om direct te verzenden of .Display om het venster te openen voor verzending.

Je andere vraag begrijp ik niet hoe je dat voor ogen hebt (je zet ze vast in de code).
Misschien kun je daar nog wat info over geven.
Er is vast wel iemand die daar antwoord op heeft.

Ik ben even met de Pc aan het klooien.
 
Harry,
- Ik krijg inderdaad soms de foutmelding bij ".send" en niet bij ".to send"zoal ik verkeerdelijk meldde.
- En ik ben je inderdaad wat meer uitleg verschuldigd. Ik wens een excelbestandje door te sturen naar een aantal mensen binnen de firma. De bedoeling is dat zij mits het gebruik van een userform bepaalde informatie kunnen doorsturen naar de ingang van het gebouw (om bezoekers aan te kondigen). Het excelbestand moet er dan voor zorgen dat in het bericht van outlook alle gegevens op een gestandaardiseerde manier worden doorgestuurd. Op die manier volstaat het voor de ontvanger om met een copy en paste het bericht in zijn outlookkalender in te vullen (natuurlijk zou het beter zijn dat dit vanuit excel rechtstreeks in de kalender kan maar van outlookprogrammatie ken ik helemaal niets). Nu gebeurt dit met outlookberichten in allerlei verschillende formaten. Soms zelfs antwoorden op antwoorden die dan nog eens doorgestuurd werden => voor je dan als ontvanger het gevraagde vindt ...
Om nu te verhinderen dat om het even wie die het excelbestand in de hand krijgt een aanvraag kan doen ... zou ik willen dat bijv. enkel users met emailadres eindigend op "@mijnbedrijf1.be" of "@mijnbedrijf2.be" gebruik kunnen maken van deze excelapplicatie.
Ik hoop hiermee een beetje licht in het duister gebracht te hebben.
 
Waarom niet met de hand als een afspraak met een bezoeker in de eigen agenda wordt gezet doorgestuurd via het emailadres naar de portier ? (recipients.add)
 
snb,
Dit gaat echt over verwachte leveranciers, herstellers, groenverzorgers ....En de diensten die deze gegevens doorspelen zetten die gegevens nu eenmaal niet steeds in hun agenda. Daarom wou ik hen een excelformulier bezorgen zodat na invulling en verzending de portier aan de ingang van de parking zo makkelijk mogelijk de gegevens in zijn kalender kan copy & pasten.
Bovendien zou in het bericht natuurlijk niet enkel het verwachte uur terechtkomen maar eerder zoiets als:
"UUR:14.15 | nrplaat:1GGG445 | Naam bezoeker: Van piepersele | Bestemmeling: drukkerij| Bij aankomst te contacteren: 045555666999"
 
Laatst bewerkt:
Het invullen van een Excelformulier en door de portier weer knippen en plakken is veel meer werk dan een afspraak invoeren in de eigen agenda met het emailadres van de portter erbij. (Daar kun je in Outlook zelf een sjabloon voor maken.)
Geen portier die nog iets hoeft te knippen en plakken (met alle mogelijke fouten vandien).
 
Laatst bewerkt:
Ok snb. Kan zijn maar ik ben niet zo vertrouwd met de mogelijkheden van outlook. Heb ondertussen ook een draadje gestart in het outlookforum. bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan