VBA celimport

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Jan Meyer
  • Registratie: Januari 2022
  • Laatst online: 10-01-2022
Beste,

Ik ben bezig met een Excel sheet om automatisch een mail te sturen via een macro.

Het gaat om het automatiseren van automatische bestelmails als een minimum is bereikt, zie onderstaande afbeelding.

Afbeeldingslocatie: https://tweakers.net/i/8UpqSmK5-ZxPIcIBhUaYmH5CrMc=/800x/filters:strip_icc():strip_exif()/f/image/GJJIQ5KtnJDUrknJAbonlWOY.jpg?f=fotoalbum_large

Ik heb onderstaande macro gemaakt maar krijg het inlezen van de inhoud direct in de code niet van elkaar, kunnen jullie mij erbij helpen?

Dim xRg As Range
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("I2"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Beste leverancier D2 " & vbNewLine & vbNewLine & _
"Ik zou graag artikel B2 met artikelnummer C2 bijbestelhoeveelheid H2 keer bij willen bestellen." & vbNewLine & _
"Met vriendelijke groet"
On Error Resume Next
With xOutMail
.To = "mailadres E2 "
.CC = ""
.BCC = ""
.Subject = "automatische order"
.Body = xMailBody
.Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub


Bedankt voor de responds,
Jan

Alle reacties


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Wat werkt er niet? Begin eens met debuggen (nadat je de "On Error Resume Next" hebt weggehaald natuurlijk).

Hoe roep je de macro overigens aan? De code "If Target.Cells.Count > 1 Then Exit Sub" vind ik ietswat schimmig.

When life gives you lemons, start a battery factory


Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Alle terechte opmerkingen over 'on error resume next' en 'gebruik geen code in produktie die je niet zelf snapt of is gemaakt door iemand die het snapt' daargelaten: de vraag lijkt te zijn hoe je de waarde uit een cel ophaalt.

Dus in plaats van "Beste leverancier D2", "Beste Houtbedrijf de Splinter" tenminste als in D2 'Houtbedrijf de Splinter' staat.

tldr:
code:
1
xMailBody = "Beste leverancier " & Range("D2") & vbNewLine & vbNewLine & _
etc.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Jan Meyer
  • Registratie: Januari 2022
  • Laatst online: 10-01-2022
Hoi KabouterSuper,

Dank voor de input.
debuggen heb ik al gedaan "if target... is alleen maar dat er geen ander getal gebruikt kan worden dan 0 of 1.

Ik heb alleen in vet ingeschreven wat de bedoeling is.

dus Beste leverancier D2 is geen code maar wat erin hoord.
Als ik Lustucru goed begrijp is het dus

xMailBody = "Beste" & Range("D2") & vbNewLine & vb NewLine & _

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 23:32

g0tanks

Moderator CSA
Wat is dan de foutmelding die je krijgt? In welke regel gaat het mis? Dat is voor mij nog steeds niet duidelijk.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • Jan Meyer
  • Registratie: Januari 2022
  • Laatst online: 10-01-2022
Het is gelukt en werkt perfect, Dank voor de input.

Dim xRg As Range
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("I2"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Beste " & Range("D2") & vbNewLine & vbNewLine & _
"Ik zou graag artikel " & Range("B2") & vbNewLine & _
"met artikelnummer " & Range("C2") & vbNewLine & _
Range("H2") & " keer willen bestellen" & vbNewLine & _
"Dit is een automatisch gegenereerde E-mail" & vbNewLine & vbNewLine & _
"Met vriendelijke groet," & vbNewLine & _
"Team ... B.v."
On Error Resume Next
With xOutMail
.To = Range("E2")
.CC = ""
.BCC = ""
.Subject = "automatische order"
.Body = xMailBody
.Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Pagina: 1