Toon posts:

[VBA] Waar Outlook XP scripts te plaatsen *

Pagina: 1
Acties:
  • 325 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi allen,

Ik ben me momenteel aan het verdiepen in VB scripting onder outlook omdat ik van de binnenkomende mails alle attachments met een bepaalde extensie wil opslaan naar c:\incomming zonder dat daar een menselijke hand bij tepas komt :)

nu ben ik al behoorlijk ver gekomen. Ik heb de scripts op het web/hier gevonden en heb het als een macrotje zelfs al even in werking gehad maar dat is weer met de hand..

nu heeft de wizard regels in outlook XP de volgende optie (zie plaatje)
Afbeeldingslocatie: http://picserver.student.utwente.nl/getpicture.php?id=157803

nu kon ik dus echt alles netjes op internet e/d vinden op 1 ding na..

hoe krijg ik mijn script in dat lijstje dat je links op het plaatje ziet..

ik heb al in me programfiles\microsoft office\ gezocht en in me docs/settings maar zie nergens een mapje waar ik het scriptje kwijt kan zodat ie in die lijst komt

en zoals je kunt zien heeft de F1 (help) functie ook weer een leuk advies :P

Tis misschien een simpelle vraag maar ik kon het gewoonweg nergens vinden :D

ik hoop dat iemand mij hiermee kan helpen
alvast bedankt :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

offtopic:
Nou Gohan, dat is dus het 'topic reports' knopje, waarmee je anoniem een topic onder de aandacht kunt brengen bij de moderators met een melding die alleen zij kunnen lezen :) Hij ziet er zo uit: Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/icon_hand.gif :P

Professionele website nodig?


  • Master__R
  • Registratie: September 2002
  • Laatst online: 20-08 19:39
kopieren - plakken??

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Heb je al gekeken naar de advanced options binnen Outlook?
(Tools - Options - Tabblad Other - Knopje Advanced Options) Daar kun je (COM) add-ins toevoegen etc. Volgens mij kun je daar je script in het lijstje proppen. Not tested, maar daar zou ik het zoeken.

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 17 June 2003 @ 17:39:
Heb je al gekeken naar de advanced options binnen Outlook?
(Tools - Options - Tabblad Other - Knopje Advanced Options) Daar kun je (COM) add-ins toevoegen etc. Volgens mij kun je daar je script in het lijstje proppen. Not tested, maar daar zou ik het zoeken.
ja daar kan ik alleen .exe en .dll bestanden invoegen en tis momenteel een macro?? :S

Verwijderd

Topicstarter
dit is trouwens het script dat ik gebruik:

Visual Basic:
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
Sub opslaan()
'Declaration
Dim myItems, myItem, myAttachments, myAttachment As Object
Dim myOrt As String
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
myOrt = "C:\incomming\"

On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel

'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count > 0 Then

'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

Next i

End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing
End Sub

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Hoe lang heb je eigenlijk gezocht? ;)

Ik ben 2 seconden bezig met [google=outlook use script rules wizard] en de derde hit is raak!


http://www.exchangeadmin....cleID=22950&pg=1&show=471

Interessant artikel over hetgeen jij wilt bewerkstelligen :)

[ Voor 2% gewijzigd door BtM909 op 19-06-2003 12:18 . Reden: typo ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

:o Één van de dingen die ik als eerste uitzet is (VB)scripting...

Heb je ook gekeken in de diverse "Application Data" folders?

Verwijderd

Topicstarter
BtM909 schreef op 19 June 2003 @ 12:17:
Hoe lang heb je eigenlijk gezocht? ;)

Ik ben 2 seconden bezig met [google=outlook use script rules wizard] en de derde hit is raak!


http://www.exchangeadmin....cleID=22950&pg=1&show=471

Interessant artikel over hetgeen jij wilt bewerkstelligen :)
ja heel leuk maar daar vertellen ze dus niet HOE je jouw schript in dat keuzemenutje krijgt

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 19 juni 2003 @ 12:43:
[...]


ja heel leuk maar daar vertellen ze dus niet HOE je jouw schript in dat keuzemenutje krijgt
Dan lees je waarschijnlijk verkeerd ;)
Procedures that you want to run from the Rules Wizard need to be subroutines that have one argument: a MailItem object variable. You can place these subroutines in the built-in ThisOutlookSession module or in a new module that you create. For easier management, I recommend that you create a new module, name it basMyRules, and place all subroutines for use with the Rules Wizard in that module.
Kijk eens in je code: daar heb je dus geen MailItem object variabele. Ze doen er ook nog een voorbeeld bij:
code:
1
2
3
4
5
6
7
8
9
10
Sub ConvertHTMLToDefault(objMsg As MailItem)
    Select Case objMsg.BodyFormat
        Case olFormatHTML, olFormatUnspecified
            objMsg.BodyFormat = olFormatPlain
            objMsg.Save
        Case Else
            ' RTF or plain text are OK
    End Select
    Set objMsg = Nothing
End Sub


werkt die ook niet? Ik denk het wel nl. ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
hmmz ik ga dat eens proberen.. ben geen vb-coder dus tis ff klooien tnx :)

Verwijderd

Topicstarter
mjah gelukt :D

tnx :D

alleen deed ie t als macro wel net maar als ik m nu aanroep vanuit de wizard regels slaat ie de attachments niet meer op :X

source:

Visual Basic:
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
Sub opslaan(objMsg As MailItem)
'Declaration
Dim myItems, myItem, myAttachments, myAttachment As Object
Dim myOrt As String
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

'Ask for destination folder
myOrt = "C:\incomming\"

On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection

'for all items do...
For Each myItem In myOlSel

'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count > 0 Then

'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

Next i

End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing
End Sub

Verwijderd

Topicstarter
ik ben er ondertussen achtergekomen dat dit script alleen werkt op geselecteerde emails met bijlage en NIET op de mail die op dat moment door de wizzar regels in behandeling is..

weet iemand hier hoe ik de bovenstaande source toepasbaar maak op nieuw binnenkomende email ?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 19 juni 2003 @ 14:37:
ik ben er ondertussen achtergekomen dat dit script alleen werkt op geselecteerde emails met bijlage en NIET op de mail die op dat moment door de wizzar regels in behandeling is..

weet iemand hier hoe ik de bovenstaande source toepasbaar maak op nieuw binnenkomende email ?
Je maakt gebruik van selecties, maar zo werkt de rules wizard dus niet!

Op het moment dat je VBA-script uitgevoerd wordt, dan heb je één mailtje (geen selectie dus) en dus een mail-object. Krijg je 400 mailtje tegelijk binnen, dan wordt (volgens mij) dat vba script 400 keer uitgevoerd!
Kan je simpel checken door ff een breakpoint toe te voegen.

Dus die werkzaamheden op je selectie kan je eruit bouwen, omdat je maar een mail object op dat moment heb.


offtopic:

code:
1
myOrt = "C:\incomming\"

incomming ;)

[ Voor 5% gewijzigd door BtM909 op 20-06-2003 09:37 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Visual Basic:
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
Sub opslaan(objMsg As MailItem)
'Declaration
Dim myItems, myItem, myAttachments, myAttachment As Object
Dim myOrt As String
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer

'Ask for destination folder
myOrt = "C:\incomming\"

On Error Resume Next

'work on selected items
Set myOlExp = myOlApp.ActiveExplorer

'for all items do...
For Each myItem

'point on attachments
Set myAttachments = myItem.Attachments

'if there are some...
If myAttachments.Count > 0 Then

'for all attachments do...
For i = 1 To myAttachments.Count

'save them to destination
myAttachments(i).SaveAsFile myOrt & _
myAttachments(i).DisplayName

Next i

End If

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
End Sub


dit is mijn poging tot het eruit halen van de selectiemethode...

ik ken zelf geen vb dus vandaar dat ik t ff post..

heb ik t zo goed gedaan of gaat dit niet werken? (kan t nu niet testen want ik zit op een lanparty)

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Dit gaat niet werken. Je zegt namelijk "For Each myItem" zonder eerst een object aan deze variabele toe te kennen. Als je dit oplost dan heb je nog een probleem omdat je alle mailtjes langsgaat en dus ook alle mailtjes waarvan je de bijlage al hebt opgeslagen.

Probeer een het volgende te coderen
Ga van myExplorer naar de inbox (dit voorkomt dat als je in een andere map staat als een mail binnenkomt dat het dan niet werkt)
Selecteer dan alle mailtjes in je inbox in bijv myMailItems
Loop dan langs alle mailtjes via de for each myItem in myMailItems
controleer dan voor elk mailtje of het al gelezen is zo ja dan dit item negeren
dan jouw code voor het opslaan van het attachment
dan het mailtje als gelezen markeren

Hierdoor zorg je dat je alle mails die binnenkomen controleert zonder dat je zaken dubbel doet.

Ik heb dit wel eens in Outlook2000 geschreven. Ik controleerde echter bij elke nieuwe mail en in een map die op hetzelfde niveau in de stond als de inbox. Ik heb het een beetje omgeschreven alleen niet getest. Ik hoop dat dit is wat je bedoeld.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Set myNamespace = Application.GetNamespace("MAPI")
Set myDefaultfolder = myNamespace.GetDefaultFolder(olFolderInbox)
Set myParent = myDefaultfolder.Parent
Set myFolder = myParent.Folders("de naam vna de map in outlook")
Set myItems = myFolder.Items
strPad = "de lokatie waar de attachments moeten worden opgeslagen"
For x = 1 To myItems.Count
    Set myitem = myFolder.Items(x)
    If myitem.UnRead = True Then
        myitem.UnRead = False
        Set myAttachments = myitem.Attachments
        If myAttachments.Count > 0 Then
        For i = 1 To myAttachments.Count
             With myAttachments.Item(i)
                strAttName = .DisplayName
               .SaveAsFile strPad & "\" & strAttName
            End With
        Next i
        End If
    End If
Next

I'm not a complete idiot - several parts are missing.


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Dit is alles wat je nodig hebt.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Opslaan(objMsg As MailItem)
'Declaration
Dim myAttachments As Attachments
Dim myOrt As String

'Ask for destination folder
myOrt = "C:\incoming\"
'point on attachments
Set myAttachments = objMsg.Attachments
'if there are some...
If myAttachments.Count > 0 Then
  'for all attachments do...
  For i = 1 To myAttachments.Count
    'save them to destination
    myAttachments(i).SaveAsFile myOrt & myAttachments(i).DisplayName
  Next i
End If

'free variables
Set myAttachments = Nothing

End Sub

Verwijderd

Topicstarter
ik heb het bovenstaande scriptje van rob even getest..

hij geeft geen foutmelding tijdens het uitvoeren van de regel maar toch komt er niets in c:\incoming te staan?

ik gebruik outlook XP kan dat het probleem zijn?

het mapje bestaat uiteraard wel gewoon :)

Verwijderd

Topicstarter
goed ik heb het nu werkend.. allemaal hardstikke bedankt voor jullie hulp.

misschien dat iemand dit ooit nog eens nodig heeft dus ik zal maar zeggen wat ik nu gedaan heb

ik heb in de VBA-editor van Outlook een module aangemaakt met de volgende code erin.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Opslaan(objMsg As MailItem)
Set myNamespace = Application.GetNamespace("MAPI")
Set myDefaultfolder = myNamespace.GetDefaultFolder(olFolderInbox)
Set myParent = myDefaultfolder.Parent
Set myFolder = myParent.Folders("Postvak IN")
Set myItems = myFolder.Items
strPad = "C:\incoming\"
For x = 1 To myItems.Count
    Set myItem = myFolder.Items(x)
    If myItem.UnRead = True Then
        myItem.UnRead = False
        Set myAttachments = myItem.Attachments
        If myAttachments.Count > 0 Then
        For i = 1 To myAttachments.Count
             With myAttachments.Item(i)
                strAttName = .DisplayName
               .SaveAsFile strPad & "\" & strAttName
            End With
        Next i
        End If
    End If
Next

End Sub


in Outlouk bij de Wizzard regels heb ik toen een regel toegevoegd:

-Berichten controleren als deze aankomen
. - emails met een bijlage
. - emails met ".asc" of ".ASC" in het onderwerp
. . - een script uitvoeren (bassMyRules.opslaan)

wanneer er nu een email met bijlage binnenkomt met in het onderwerp ".asc" of ".ASC" (om te voorkomen dat ie dit ook doet met prive mailtjes :P )
word de bijlage opgeslagen in c:\incoming en de email als gelezen gemarkeerd.

Toepassing? mjah sommige zullen zich dus wel afvragen waarvoor ik dit toe wil passen..
ik ben bezig met een registratiesysteem waarmee aanvragen worden verstuurd naar een vol geautomatiseerd systeem (via email) dat de aanvragen in .XML formaat accepteerd, echter om persoonlijke gegevens in de XML af te schermen wordt deze dmv GnuPG gecodeerd en als een ".asc" bestand verzonden.

dit script komt op de client van de binnenkomende aanvragen te draaien waar door een ander script alle .asc bestandjes in c:\incoming worden gedecodeerd naar .xml bestanden en die verdwijnen dan de aanvraagmachine in :)

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 05-08 21:32

ReLight

echo("What Now ? !")

Waarom dit niet op/door een mailserver laten afhandelen ?

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Verwijderd

Topicstarter
ReLight schreef op 23 juni 2003 @ 15:38:
Waarom dit niet op/door een mailserver laten afhandelen ?
geldbesparing.. de client met outlookXP erop bestaat al (er is straks 1 iemand dus verlost van een rottig werkje :) )

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 05-08 21:32

ReLight

echo("What Now ? !")

suggestie : ouder machientje, Linux mandrake erop (of whatever gratis distro) en scriptjes in elkaar draaien.
Kosten: 0.- Enkel tijd en moeite, EN je process loopt 24h per dag door, ook in weekend en bij ziekte van die ene die nu dat rotklusje mist.
+Je leert er onwijs van..

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Verwijderd

Topicstarter
ReLight schreef op 23 June 2003 @ 22:59:
suggestie : ouder machientje, Linux mandrake erop (of whatever gratis distro) en scriptjes in elkaar draaien.
Kosten: 0.- Enkel tijd en moeite, EN je process loopt 24h per dag door, ook in weekend en bij ziekte van die ene die nu dat rotklusje mist.
+Je leert er onwijs van..
helaas is mijn linuxkennis 0,0 en is er al een deadline..

maar we gaan nu wel erg offtopic.. het werkt en de oplossing is er dus nogmaals bedankt...

  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Zo te zien heb je voor een (groot) deel mijn oplossing gebruikt. Ben blij dat ik je heb kunnen helpen. :)

Voor het mooie zou je regel 4 en 5 nog kunnen verwijderen. Wat je nu namelijk doet is via regel 3 naar de inbox gaan via regel 4 naar een niveau boven de inbox en met regel 5 weer naar de inbox. Het werkt zo natuurlijk ook maar het helpt voor later als je nu zo duidelijk mogelijk bent.

Veel succes verder ed.

I'm not a complete idiot - several parts are missing.

Pagina: 1