Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Fråga om ett outlook makro!

Postades av 2002-12-27 13:55:55 - Peter Eriksson, i forum visual basic - allmänt, Tråden har 11 Kommentarer och lästs av 785 personer

Hallå!
Det är första gången jag skriver här och hoppas på eran mästerliga hjälp, hoppas också att det är i rätt forumdel ;) Det är så att jag har lyckats knåpa ihop ett outlook makro, lite stulet, lite eget, som jag använder dagligen i mitt arbete. jag har dock stött på patrull med det och söker härmed experthjälp. Koden som kommer att följa saknar lite kod som gör att filerna den skall kopiera skrivs över istället för att fylla på till den mapp jag har bestämt. ni förstår om ni läser koden. Alltså när jag kör makrot i outlook så skall det kopieras bifogade filer från dom inkomna mailen till en speciell mapp på en server. Vissa dagar så får jag bara ett mail och då är detta inget problem, men vissa dagar så får jag fler än ett mail och när jag då kör makrot så skriver den över dom bifogade filerna varteftersom makrot körs. Inge bra! jag vill alltså att makrot/koden skall skapa unika namn för filerna automatiskt. Förstår ni vad jag frågar efter?

Om ni har svaret så skriv gärna koden så som den skall vara då jag själv är väldigt rutten på att få ihop det. Please! ;)

Koden då:
Public Function SaveAttachments(Optional PathName As String, Optional FolderName As String) _
As Boolean
Dim oOutlook As Outlook.Application
Dim oNs As Outlook.NameSpace
Dim oFldr As Outlook.MAPIFolder
Dim oInboxFldr As Outlook.MAPIFolder
Dim oMessage As Object
Dim sPathName As String
Dim sMBoxName As String
Dim sFolderName As String
Dim oAttachment As Outlook.Attachment
Dim iCtr As Integer
Dim iAttachCnt As Integer

On Error GoTo ErrHandler

If PathName = "" Then
sPathName = "C:\Temp\"
Else
sPathName = PathName
End If

If FolderName = "" Then
sFolderName = "Inkorgen"
Else
sFolderName = FolderName
End If

If Right(sPathName, 1) <> "\" Then sPathName = sPathName & "\"
If Dir(sPathName, vbDirectory) = "" Then Exit Function

Set oOutlook = New Outlook.Application
Set oNs = oOutlook.GetNamespace("MAPI")
Set oInboxFldr = oNs.GetDefaultFolder(olFolderInbox)
Set oFldr = oInboxFldr.Folders(sFolderName)

For Each oMessage In oFldr.Items
With oMessage.Attachments
iAttachCnt = .Count
If iAttachCnt > 0 Then
For iCtr = 1 To iAttachCnt
.Item(iCtr).SaveAsFile sPathName _
& .Item(iCtr).FileName
Next iCtr
End If
End With
DoEvents
oMessage.Delete

Next oMessage
SaveAttachments = True

ErrHandler:
Set oMessage = Nothing
Set oFldr = Nothing
Set oNs = Nothing
Set oOutlook = Nothing
End Function


Sub whateverAttachment()
Dim Result As Boolean
Result = SaveAttachments("\\servernamn\mappnamn\", "whatever")
End Sub

Tacksam för hjälp med detta!
/Peter


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-27 17:04:28 - Niklas Jansson

Koden är väl kanske inte den vackraste, så det är lite knepigt att förstå hur anropen går till.

Den kod du använder som berörs är väl denna:

.Item(iCtr).SaveAsFile sPathName & .Item(iCtr).FileName

Eftersom jag inte riktigt vet hur outlook fungerar så är det svårt, men något av de här alternativen borde fungera:

1. Lägg till meddelandetiteln/avsändaren/etc. före (eller efter) filnamnet, typ

.Item(iCtr).SaveAsFile oMessage.Title & sPathName & .Item(iCtr).FileName

eller

oMessage.Sender

eller något i den stilen.

2. Ha indexnummer på filerna. Detta är krångligt eftersom du måste hålla reda på alla filnamn.

3. Skapa en mapp per avsändare. Om någon avsändare skickar mer än en fil med samma namn blir det iofs problem, men det är samma sak som i alternativ 1.

typ
MkDir sPathName & oMessage.Sender
.Item(iCtr).SaveAsFile sPathName & oMessage.Sender & "\" & .Item(iCtr).FileName


4. Ställ en fråga för varje fil som skall skrivas över. Problemet med detta är att det inte finns någon inbyggd metod i VBA för att se om filerna redan finns. Du får i så fall använda dig av FSO, men där vet jag inte vad metoden heter.

/Niklas Jansson


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-27 22:09:21 - Peter Eriksson

Ok!
Sorry för den otydliga koden :) Sen har jag nu förstått att det här är VB for applications och förmodligen inget speciellt för just outlook, eller har jag fel?!?
Hursomhelst!
Skall försöka förtydliga lite. Det är alltid samma avsändare! Filerna som är bifogade heter alltid typ 20021227.txt (datum alltså!). Jag får alltid bara en (1) bifogad fil per mail, vilket betyder om jag får två eller fler mail per dag så heter filerna samma sak fast i olika mail. Första brevet 20021227.txt andra brevet 20021227.txt osv. varför filerna naturligtvis skrivs över då det är samma filnamn på dom o detta skiter ju narurligtvis outlook högaktningsfullt i i sitt makro o bara skriver över. Detta med filnamnen kan jag inte ändra på då det sker per automatik från företaget jag får dom ifrån. Jag kan heller inte ha flera mappar att lägga dom i då jag i nästa steg kör en batch från vårat datasystem som också automatiskt scannar igenom den förutbestämda mappen efter filer. Det som däremot inte har någonsomhelst betydelse är vad filerna heter då dom hamnar i slutmappen, varför någon form av automatiskt omdöpning av filerna inte skulle spela ngn roll, snarare tvärt om.
Finns det ingen funktion för att t ex alltid ge en fil ett unikt namn eller nån autoincrement av ngt slag? Typ 20021227_xx.txt! eller vadsomhelst1.txt, vadsomhelst2.txt osv...

Hoppas att du/ni förstod vad jag menade?!

Och skriv gärna exakt var koden skall in eller liknande då jag, som jag skrev tidigare, är helrutten på detta. Det är mer eller mindre tur bara att jag har fått det att fungera så här långt :)
/Peter


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-27 23:49:38 - Niklas Jansson

>Sorry för den otydliga koden :)
Det är ingen fara, såå otydlig var den inte, det är bara det att om man inte sysslat med VBA för outlook och ser ett litet hopkok så är det lite knepigt... :)


Förklaringen var bra. Det skall nog inte vara speciellt svårt alls...

Dim iCount As Long


For Each oMessage In oFldr.Items
With oMessage.Attachments
iAttachCnt = .Count
If iAttachCnt > 0 Then
For iCtr = 1 To iAttachCnt
.Item(iCtr).SaveAsFile sPathName _
& CStr(iCount) & "_" & .Item(iCtr).FileName
iCount = iCount + 1
Next iCtr
End If
End With
DoEvents
oMessage.Delete


Det bör nog fungera.

/Niklas Jansson


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-28 12:07:22 - Peter Eriksson

Ah! Lysande...
Eh! Exakt vart skall detta in då? *skäms*


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-28 15:02:15 - Niklas Jansson

Public Function SaveAttachments(Optional PathName As String, Optional FolderName As String) _
As Boolean
Dim oOutlook As Outlook.Application
Dim oNs As Outlook.NameSpace
Dim oFldr As Outlook.MAPIFolder
Dim oInboxFldr As Outlook.MAPIFolder
Dim oMessage As Object
Dim sPathName As String
Dim sMBoxName As String
Dim sFolderName As String
Dim oAttachment As Outlook.Attachment
Dim iCtr As Integer
Dim iAttachCnt As Integer

On Error GoTo ErrHandler

If PathName = "" Then
sPathName = "C:\Temp\"
Else
sPathName = PathName
End If

If FolderName = "" Then
sFolderName = "Inkorgen"
Else
sFolderName = FolderName
End If

If Right(sPathName, 1) <> "\" Then sPathName = sPathName & "\"
If Dir(sPathName, vbDirectory) = "" Then Exit Function

Set oOutlook = New Outlook.Application
Set oNs = oOutlook.GetNamespace("MAPI")
Set oInboxFldr = oNs.GetDefaultFolder(olFolderInbox)
Set oFldr = oInboxFldr.Folders(sFolderName)
Dim iCount As Long


For Each oMessage In oFldr.Items
With oMessage.Attachments
iAttachCnt = .Count
If iAttachCnt > 0 Then
For iCtr = 1 To iAttachCnt
.Item(iCtr).SaveAsFile sPathName _
& CStr(iCount) & "_" & .Item(iCtr).FileName
iCount = iCount + 1
Next iCtr
End If
End With
DoEvents
oMessage.Delete


Next oMessage
SaveAttachments = True

ErrHandler:
Set oMessage = Nothing
Set oFldr = Nothing
Set oNs = Nothing
Set oOutlook = Nothing
End Function


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-28 15:35:01 - Peter Eriksson

Ah! Fy sjutton va bra, skall prova så fort jag kan...
En fråga till bara! Skall inte detta vara med längre i slutet som jag hade i den första koden? Sökvägen till servermappen alltså?

Sub whateverAttachment()
Dim Result As Boolean
Result = SaveAttachments("\\servernamn\mappnamn\", "whatever")
End Sub


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-28 16:03:10 - Niklas Jansson

jorå... jag tänkte bara visa var det skall sitta...


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-28 16:11:30 - Peter Eriksson

Suveränt!
Ser vart du har gjort ändringen men förstår inte vad du har gjort, men det är säkert alla tiders :)
Skall prova detta på måndag då jag är tillbaka på jobbet.
Jag hör av mig! Tack för hjälpen så långt!
/Peter


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-30 07:55:49 - Peter Eriksson

Äsch! det funkade inte :(
Har nu provat och det enda den gör nu är att lägga till 0_ framför filen, den stegar inte upp vid fler filer med samma namn! Den bara ersätter precis som förut.
Annars så är idén helt rätt, alltså 0_datumosv.txt, 1_datumosv.txt,... men den kommer alltså inte dit.
/Peter


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-30 12:32:34 - Niklas Jansson

testa med
Static iCount As Long
istället

skulle kunna funka

/Niklas Jansson


Svara

Sv: Fråga om ett outlook makro!

Postades av 2002-12-30 14:11:30 - Peter Eriksson

Holy dogshit private! Där hade vi det :)
Det funkar nu! F*n va jag blir glad!
tack tack tack!!!
Det här underlättar en hel del i mitt arbete. Jag är dig evigt tacksam!
/Peter


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
615
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies