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

Automatisch e-mail openen bij bepaalde celwaarde

Status
Niet open voor verdere reacties.

MPJSnel

Nieuwe gebruiker
Lid geworden
30 jun 2014
Berichten
2
Ik heb al een flink aantal oplossingen geprobeerd, ook via de website van Ron de Bruin. Helaas lukt het me niet om onderstaand op te lossen, ik hoop dat ik met deze vraag op de goede weg kom.

Het probleem
Via het bestand wordt de voorraad bijgehouden, elk artikel heeft een eigen tabblad (totaal ongeveer 50).
In A1 staat de naam van het product.
In volgende kolommen worden datum, t.b.v., aantal uit, aantal in, restant (formule), naam, telling genoteerd. Er zijn ook kolommen die kijken of het restant boven of onder de elders aangegeven min/max zit en aangeven of en hoeveel er besteld moet worden en of de teamleider moet worden gemaild bij onverklaarde tekorten.
In A2 staat via een formule het verschil tussen de hoeveelheid die er volgens de berekening moet zijn en hetgeen geteld is, de waarde van deze cel varieert maar kan zolang het onverklaarde tekort niet is aangevuld ook langer bestaan.

Wens
Indien A2>0 wordt Outlook geopend:

  • Het veld Aan bevat: teamleider@werk.nl
  • Het veld Onderwerp bevat de naam van het artikel uit cel A1
  • In het bericht staat:
Beste teamleider,

De telling van [A1] toont een tekort van [A2].

Met vriendelijke groet,
[Gebruikersnaam ingelogde werknemer]

Heeft een van jullie wellicht de gouden tip?
Alvast bedankt voor het meedenken.

Groeten,
MarinusPJ
 
Code voor de mail:
Code:
Sub Mailen()
    Dim OutApp As Object
    Dim OutMail As Object
    
    sBody = "Beste teamleider," & vbCrLf & vbCrLf & _
            "De telling van " & Range("A1") & " toont een tekort van " & Range("A2") & "." & vbCrLf & vbCrLf & _
            "Met vriendelijke groet," & vbCrLf & _
             Environ("username")
  
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "teamleider@werk.nl"
        .CC = ""
        .BCC = ""
        .Subject = Range("A1")
        .Body = sBody
        .Display [COLOR="#008000"]'of .Send[/COLOR]
    End With
End Sub

Nu nog op het juiste moment uitvoeren.
 
Dank je wel edmoor. Maar de grote truc is dat outlook pas gestart moet worden indien de celwaarde groter dan 0 is. Zoals je zegt: op het juiste moment uitvoeren.
Als het werk het morgen toestaat zal ik het bestand ontdoen van namen en andere gevoelige info, en daarna uploaden. Dan wordt de vraag misschien wat minder onzinnig;)
 
De vraag is niet onzinnig. Wel het gebruik van verschillende tabjes per artikel. We zien het bestandje wel tegemoet.
 
Dank je wel edmoor. Maar de grote truc is dat outlook pas gestart moet worden indien de celwaarde groter dan 0 is.
Simpel.
Dan roep je mijn voorbeeld toch aan vanuit het Worksheet_Change event?
Daarom schreef ik, nu nog op het juiste moment uitvoeren.
 
Laatst bewerkt:
Bekijk bijlage Voorraad medicatie helpmij.xlsm

Het heeft even geduurd, vakanties, andere prioriteiten, enz. De bijlage toont het afgeslankte bestand waar de VBA van edmoor (nog bedankt) in verwerkt is. De gebruiker krijgt bij het bereiken van een negatief getal in het verschil tussen wat er moet zijn en wat er geteld is een melding te zien dat hij een mail moet versturen. Hij klikt dan op de button en klaar is Kees.
Vooralsnog ben ik dik tevreden. Ik zit nog wel te puzzelen of ik de Office gebruikersnaam kan opnemen in het werkblad i.p.v. het keuzelijstje onder 'Verwerkt door', en bij de ondertekening van de mail i.p.v. de windows gebruikersnaam. Dat is namelijk soms een wat cryptische.

Ik heb het document met tabjes opgebouwd omdat dit het meest lijkt op de papieren versie die we hiervoor hanteerden. Ik heb een paar voorraadbeheerbestanden gezien waar ik geen pepernoot van begreep, laat staan de andere (soms erg digibete) gebruikers. @VenA: mocht je nou zeggen: "Dan heb je deze vast nog niet gezien".... hou ik me aanbevolen.

Groeten en bedankt voor het meedenken,
MarinusPJ
 
Gebruikersnaam via VBA:
Code:
Range("A1").Value = Environ("Username")
 
Laatst bewerkt:
Als ik dit op de plek zet waar nu nog Environ("username") staat er alleen nog maar 'Onwaar' in het bericht. Waarschijnlijk begrijp ik je niet goed?
 
Je wilde weten hoe de gebruikersnaam in je werkblad te zetten en dat liet ik zien.
Dat levert nooit een ONWAAR op. Ik kan zo uiteraard niet zien wat je er verder mee gedaan hebt.
 
Ja, top. Ik zie 'm. Maar ik heb het ook niet goed uitgelegd...
Je hebt me wel op het goede spoor gezet, hartstikke bedankt. De oplossing die ik zocht was voor het tonen van de gebruikersnamen in een kolom afhankelijk van het al dan niet ingevuld zijn van cellen in een andere kolom. Als b10 is niets dan niets in j10 en als b10 is gevuld dan de gebruikersnaam in j10, en dat voor alle cellen in de kolommen.

De oplossing, denk ik, hoop ik, want nog niet helemaal uitgetest:
In een nieuwe module

Code:
Public Function UserName()
    UserName = Environ$("UserName")
End Function
Dan in de cellen van kolom J

Code:
=ALS(B10="";"";Username())

Als ik het nou helemaal mooi wil maken dan vervang ik de gebruikersnaam (inlog Windows) door de naam van de gebruiker zoals die staat in de applicatie (bestand -> opties -> gebruikersnaam). Dat heeft net een beter smoel. Helaas werkt het niet om Environ$ simpel te vervangen door Application$.

Voorlopig echter goed werkzaam, bij voldoende tijd weer verder puzzelen.

Groeten,
MarinusPJ
 
Maak er dan dit van:
Code:
Application.UserName

En vergeet die $-tekens.
Dat is wel heel erg oud ;)
 
BINGO!
Precies wat ik zocht. Dank je wel edmoor.

@Helpmij: de link 'vraag is niet opgelost' reageert niet op aanraken op de iPad. Ik probeer de status morgen aan te passen via een Windows pc.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan