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 | 'msg Dim OutApp As Object Dim OutMail As Object Dim strbody As String Dim FilenameStr As String Dim ccaddress As String Dim name As String MakeFileForEmail name = Range("D5") ccaddress = Range("N8") Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon Set OutMail = OutApp.CreateItem(0) strbody = "Hi xxx," & vbNewLine & vbNewLine & _ runbody On Error Resume Next With OutMail .to = "xxx@xx.nl" .CC = ccaddress .BCC = "xxx@xx.nl" .Subject = "bladiebla request from " & name .Body = strbody .Display 'or use .Send End With On Error GoTo 0 MsgBox "Email sent to xxx, xxx and " & name & "!" Set OutMail = Nothing Set OutApp = Nothing End Sub |
onethische zaken kun je met alle programmeertalen. Maarja, daar doe je het (meestal) niet voor hequote:Op maandag 1 maart 2010 16:43 schreef Hi_flyer het volgende:
[ code verwijderd ]
De body van de e-mail maak ik in een subje. Het is dus vrij eenvoudig. Een nadeel is dat je besturingssysteem een waarschuwing geeft als je .send in plaats van .display doet. Anders zou je eenvoudig een macro kunnen schrijven waarmee je een mailserver aardig kan belasten/platleggen.
Overigens kan je als je wilt wel 'onetische zaken' uitvoeren met excel. Ik kan bijv (doe ik niet) mailtjes van collega's lezen mbv Excel of hun persoonlijke agenda inkijken, of hun 'my documents' leegtrekken.
of als je behorlijk schyzo bentquote:Op maandag 1 maart 2010 17:16 schreef qu63 het volgende:
in VBA is het ook leuk om autimagisch een random scheldwoord neer te gooien in je document Maar dat werkt natuurlijk alleen als je op een gedeelde pc werkt..
Volgens de VBA help niet: http://msdn.microsoft.com/en-us/library/7ee5a7s1(VS.80).aspxquote:Op dinsdag 2 maart 2010 10:22 schreef ralfie het volgende:
@Hi_flyer
besef je wel dat dit
dim a, b, c as String
hetzelfde is als
dim a as variant, b as variant, c as string?
en je dus eigenlijk
dim a as string, b as string, c as string
bedoelt?
Verder nutteloze opmerking, maar wel een beetje snelheidswinst.
1 2 | ' a, b, and c are all Single; x and y are both Double |
quote:Different Types.
You can specify different data types for different variables by using a separate As clause for each variable you declare. Alternatively, you can declare several variables to be of the same type by using a common As clause. Each variable takes the data type specified in the first As clause encountered after its variablename part.
Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double;
1 2 3 | a = 12 MsgBox TypeName(a) |
1 2 3 | a = 12 MsgBox TypeName(a) |
1 2 3 4 5 6 7 8 9 10 11 | Dim a, b, c As String a = 12 b = 12 c = 12 MsgBox TypeName(a) & TypeName(b) & TypeName(c) End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 | Dim a As String Dim b, c As String a = 12 b = 12 c = 12 MsgBox TypeName(a) & TypeName(b) & TypeName(c) End Sub |
Leer arrays te gebruiken, dat heeft mij ontzettend veel ruimte en snelheid opgeleverd. Zeker als je bepaalde handelingen door een hele sheet wilt uitvoeren.quote:Op dinsdag 2 maart 2010 12:26 schreef Holy_Goat het volgende:
Even tussen haakjes: aangezien ik mezelf alles aangeleerd heb wat vba betreft:
zijn er wat stukken tekst die ik echt gelezen móet hebben? Ik heb vaak het idee dat ik nog best "ranzig" programmeer namelijk.
En momenteel doe ik alles nog in vba behorende bij office 2003. Zou ik stiekem wel eens een keer .net moeten gaan leren?
Verder nog een subvraagje:
Kan ik sub of subsubclasses maken in vba?
Voorbeeld: variabele diersoorten.kat.poot.lengte
De allerbelangrijkste eye-opener voor mij was dat een range in een keer omgezet kan worden naar een variant (als array)quote:Op dinsdag 2 maart 2010 12:26 schreef Holy_Goat het volgende:
Even tussen haakjes: aangezien ik mezelf alles aangeleerd heb wat vba betreft:
zijn er wat stukken tekst die ik echt gelezen móet hebben? Ik heb vaak het idee dat ik nog best "ranzig" programmeer namelijk.
1 2 3 4 5 6 7 8 | w = Range("A1:Z1502") For x = 1 To UBound(w) For y = 1 To UBound(w, 2) w(x, y) = w(x, y) * 26 + 45 / 7 + w(x, y) Next y Next x Range("AA1:AZ1502") = w |
1 2 3 4 | q = cell.Value cell.Offset(0, 26).Value = q * 26 + 45 / 7 + q Next cell |
quote:Op dinsdag 2 maart 2010 14:07 schreef ralfie het volgende:
[..]
De allerbelangrijkste eye-opener voor mij was dat een range in een keer omgezet kan worden naar een variant (als array)
Dim w as variant
w = range(a1:b2);
MsgBox w(1,1)
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |