Mijn vraag
Met behulp van https://www.rondebruin.nl/win/s1/outlook/bmail2.htm heb ik het voor elkaar dat wanneer er op de verzend bestselling button wordt geklikt er in de body van een email de rijen worden gekopierd uit het excel
Hierin staan ook extra gegevens zoals wat we nog op voorraad hebben, dit heb ik aan kunnen passen zodat allen de benodigde gegevens worden gekopierd.
In dit voorraad beheer blad maak ik gebruik van minimum en maximum voorraad, zodra het onder het minimum komt dan wordt dit aangegeven hiervoor gebruik ik =IFERROR(IF([@HOEVEELHEID]<=[@MINIMUM];1;0);0)
Wat ik graag zou willen bereiken is dat als dit true is dat juist alleen deze rij gekopierd word naar de e-mail body
Nu heb ik geprobeerd om bij "Set rng = Range("B4:B12, C4:C12, K4:K12") "een if then stament te gebruiken maar krijg het niet werkend
Is er een excel guru die me kan helpen ?
Met behulp van https://www.rondebruin.nl/win/s1/outlook/bmail2.htm heb ik het voor elkaar dat wanneer er op de verzend bestselling button wordt geklikt er in de body van een email de rijen worden gekopierd uit het excel
Hierin staan ook extra gegevens zoals wat we nog op voorraad hebben, dit heb ik aan kunnen passen zodat allen de benodigde gegevens worden gekopierd.
In dit voorraad beheer blad maak ik gebruik van minimum en maximum voorraad, zodra het onder het minimum komt dan wordt dit aangegeven hiervoor gebruik ik =IFERROR(IF([@HOEVEELHEID]<=[@MINIMUM];1;0);0)
Wat ik graag zou willen bereiken is dat als dit true is dat juist alleen deze rij gekopierd word naar de e-mail body
Nu heb ik geprobeerd om bij "Set rng = Range("B4:B12, C4:C12, K4:K12") "een if then stament te gebruiken maar krijg het niet werkend
Is er een excel guru die me kan helpen ?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| Private Sub CommandButton1_Click() Dim rng As Range Dim Outlook As Object Dim OutlookMail As Object Dim StrBody As String Set rng = Nothing On Error Resume Next Set rng = Range("B4:B12, C4:C12, K4:K12") On Error GoTo 0 If rng Is Nothing Then MsgBox "Not a range or protected sheet" & _ vbNewLine & "please correct and try again.", vbOKOnly Exit Sub End If With Application .EnableEvents = False .ScreenUpdating = False End With Set Outlook = CreateObject("Outlook.Application") Set OutlookMail = Outlook.CreateItem(0) On Error Resume Next With OutlookMail .To = "" .CC = "" .BCC = "" .Subject = "Bestelling" StrBody = "Hallo " & "<br>" & _ "Bij deze wilde ik de volgende bestelling plaatsen" & "<br>" & _ "Met vriendelijke groet" & "<br><br><br>" .HTMLBody = StrBody & RangetoHTML(rng) .Display 'or use .Send End With On Error GoTo 0 With Application .EnableEvents = True .ScreenUpdating = True End With Set OutlookMail = Nothing Set Outlook = Nothing End Sub Function RangetoHTML(rng As Range) Dim obj As Object Dim txtstr As Object Dim File As String Dim WB As Workbook File = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" rng.Copy Set WB = Workbooks.Add(1) With WB.Sheets(1) .Cells(1).PasteSpecial Paste:=8 .Cells(1).PasteSpecial xlPasteValues, , False, False .Cells(1).PasteSpecial xlPasteFormats, , False, False .Cells(1).Select Application.CutCopyMode = False On Error Resume Next .DrawingObjects.Visible = True .DrawingObjects.Delete On Error GoTo 0 End With With WB.PublishObjects.Add( _ SourceType:=xlSourceRange, _ Filename:=File, _ Sheet:=WB.Sheets(1).Name, _ Source:=WB.Sheets(1).UsedRange.Address, _ HtmlType:=xlHtmlStatic) .Publish (True) End With Set obj = CreateObject("Scripting.FileSystemObject") Set txtstr = obj.GetFile(File).OpenAsTextStream(1, -2) RangetoHTML = txtstr.readall txtstr.Close RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ "align=left x:publishsource=") WB.Close savechanges:=False Kill File Set txtstr = Nothing Set obj = Nothing Set WB = Nothing End Function |