Outlook naptár elérése VBA-ból

Outlook naptár elérése VBA-ból
2007-02-18T14:29:03+01:00
2007-02-25T22:33:08+01:00
2022-11-03T12:55:37+01:00
Csomorkany
Sziasztok!

Volt már egy hasonló kérdésem, ezért szégyenlem, hogy megint elakadtam, de képtelen vagyok úgy elérni egy Outlook naptárat, ha az nem a default naptár alnaptára, hanem egy másik (pen drive-on levő) pst-fájlban van elhelyezve.

Magában az Outlookban ugyanis működik a dolog, ezért kitettem pen-drive-ra az eszemet. Így a sajat.pst-t el tudom vinni más gépekre, meg minden.

Ami működik:
'Ezzel megadom a default naptárat
Set Mnaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)
'Ezzel megadok egy alnaptárat, ami a sajátom:
Set Snaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Folders.Item("Saját Naptár")

Amit akarok:
A GetDefaultFolder helyett a sajat.pst-ben keressen, vagy legalábbis szeretném meggyőzni a gépet arról, hogy innentől a sajat.pst legyen a default. Hát, ez nem megy.
Mutasd a teljes hozzászólást!
A "Saját naptár"-ban lévő elemeket éred el a ciklussal.

A betöltött (az Outlook adatfájl) pst fájl a "TESZT".
Abban van egy mappa.

De így mehetsz tovább is:
Set masik = mapi.Folders("Teszt").Folders("Saját Naptár").folders("alatt").folders("Azalatt")
Mutasd a teljes hozzászólást!

  • A pst fájlt meg kell nyitnod (fájl > megnyitás > Outlook adatfájl) ekkor bekerül az Outlookba.
    (Biztos meg lehet írni a megnyitást is VB-ben, ha nagyon kell)

    Aztán (elvileg nem teszteltem) ezt:

    Set ouApp = New Outlook.Application 'az ha outlookba vagy, akkor maga az alkalmazás, nem kell újként megnyitnod, tehát:
    Set OuApp = Application


    Set Mapi=OuApp.GetNameSpace("MAPI")
    set masik=Mapi.Folders(2)

    formával tudod elérni.
    1: a default, 2-es a következő megnyitott. Talán lehet a nevével is, de nem próbáltam.
    Mutasd a teljes hozzászólást!
  • Köszi, de hogy mondom meg neki, hogy a naptárra vagyok kíváncsi?

    A defaultnál meg van mondva így:
    Mnaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)

    Ebbe a kódba, amit javasolsz, hogyan zsúfoljam bele az olFolder Calendar-t?

    Set Mapi=OuApp.GetNameSpace("MAPI")
    set masik=Mapi.Folders(2)

    Csak hogy lásd a problémámat, leírom, mivel próbálkoztam:

    Set Snaptar = GetNamespace("MAPI").Folders(2).Folder(olFolderCalendar).Folders.Item("Saját Naptár")

    Sajna nem hatódott meg, amit valahogy értek, csak azt nem tudom, mit csináljak.
    Mutasd a teljes hozzászólást!
  • Talán:
    Set Snaptar = GetNamespace("MAPI").Folders(2).Folders("Saját Naptár")

    Mutasd a teljes hozzászólást!
  • Hüha, ezek szerint elakadtunk. Az olFolderCalendar - konstans valahová nagyon kell neki, enélkül hibaüzenetet ad. Alnaptárként működött ez a sor:
    Set Snaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Folders.Item("Saját Naptár")

    Úgy tűnik, valamiképpen a .GetDefaultFolder(olFolderCalendar) - elemet kellene kiváltani egy utalással a sajat.pst folder-ére a pendrive-on. Vagy valahogy meggyőzni a gépezetet arról, hogy a pendrive-on a sajat.pst a default.
    Mutasd a teljes hozzászólást!
  • Csak a rend kedvéért, ez se műxik:

    Set Snaptar = GetNamespace("MAPI").Folders(2).Folders.Item("Saját naptár")

    Próbálgattam még néhány varit, de erősen lementem találgatás-szintre, ennek megfelelő eredménnyel.
    Mutasd a teljes hozzászólást!
  • Set Mnaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar) Mnaptar.Display

    Mindenek előtt, hogy működjön ikszeld be a referenciák között az (Tools menü alatt) a Microsoft Outlook xx.x Object library-t

    De ahogy írtad ez megy.

    Innentől fogva a local window-ba a (Views menübe) megtudod nézni, hogy az objektum milyen tuljdonságokból, "alobjektumokból" épül fel. Meg fogod találni a Folders-t is. Ha kinyitod akkor láthatod az elemeket. Ezeket pl így tudod elérni:

    MsgBox Mnaptar.Folders.Session.AddressLists(1).Name

    (az én kemény nulla számú folderemmel csak ezt tudtam értelmes példának betteni, amire értlemes eredményt kaptam)

    Tehát ahol Item van ott zárójelbe adod meg a számot. Nálad, ha a folders-be a count tulajdonság nem 0, akkor lesz Item is, amire igy fogsz tudni hivatkozni:


    Mnaptar.Folders(1).valami

    Remélem érthető voltam, mert már elég késő van és holnap meló
    Mutasd a teljes hozzászólást!
  • Mindenek előtt, hogy működjön ikszeld be a referenciák között az (Tools menü alatt) a Microsoft Outlook xx.x Object library-t

    Miután Outlookba vagy, így ott felesleges.


    Set Mnaptar = GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)

    Ezzel a sajátot (alapértelmezetett) kapja meg.

    ----

    Ezzel
    Dim mapi As NameSpace Set mapi = Application.GetNamespace("MAPI") Set masik = mapi.Folders("Teszt").Folders("Saját Naptár") For Each elem In masik.Items MsgBox elem Next
    megy.
    Mutasd a teljes hozzászólást!
  • Szia, Micu,

    fogalmazzunk úgy, hogy az általad közölt kód valóban egy lépés, amennyiben kiírja, hogy létezik a "masik"-nak egy "Naptár" nevű foldere.

    Arra azonban képtelen vagyok, hogy a Naptár tartalmához hozzá is férjek.
    Mutasd a teljes hozzászólást!
  • A "Saját naptár"-ban lévő elemeket éred el a ciklussal.

    A betöltött (az Outlook adatfájl) pst fájl a "TESZT".
    Abban van egy mappa.

    De így mehetsz tovább is:
    Set masik = mapi.Folders("Teszt").Folders("Saját Naptár").folders("alatt").folders("Azalatt")
    Mutasd a teljes hozzászólást!
  • Tényleg nem megy. Erre a kódra nem ad ugyan hibaüzenetet, de a=0, pedig az emlegetett naptár tele van írva eseményekkel.

    A "Személyes mappák"-ról azt gondolom, hogy a pen-drive-ra hivatkozik, de nincs bizonyítékom, mert ugyebár a=0.

    Set mapi = Application.GetNamespace("MAPI")
    Set masik = mapi.Folders("Személyes mappák").Folders("Naptár")
    a = masik.Items.Count
    Mutasd a teljes hozzászólást!
  • msgbox mapi.Folders.count
    hányat ad vissza?
    Ha 2-t akkor:

    msgbox mapi.Folders(1)
    msgbox mapi.Folders(2)
    hogy megtudd, mik vannak.

    ----
    A "Személyes mappák" nem az alapértelmezett?
    Mutasd a teljes hozzászólást!
  • No, az alapprobléma megoldatott, jó volt az intuíciód, hálás köszönet.
    A gond ott volt, hogy

    Folders(1) = "Személyes mappák" és
    Folders(2) = "Személyes mappák",

    Vagyis, amikor a konkrét névre hivatkoztam, akkor nem tudta eldönteni, hogy melyik "Személyes mappák"-ra vagyok kíváncsi, ill. föltehetően a defaultban, a Folders(1)-ben keresett, és ott nem talált semmit.

    Ez viszont működik:
    Set masik = mapi.Folders(2).Folders("Naptár").folders("Saját Naptár").folders("Azalatt")

    Erre az alábbi ciklus kiírja az összes naptárbejegyzésemet:
    For Each elem In masik.Items
    MsgBox elem
    Next

    Bár az 50 pontot megérdemled, hogy az emberiség egésze használni tudja a remek eredményt, jó lenne még kitalálni, hogy a Folders(2)-t hogyan lehet átnevezni, hogy ne az alapbeállított "Személyes mappák"-néven fusson.

    Ami azt illeti, ki kellene azt is találni, egyáltalán hogyan lehet bezárni egy megnyitott .pst fájlt. Jelenleg ugyanis ez sem megy. Bosszantóan sokat próbálkoztam, még át is helyeztem a sajat.pst-t a pen-drive-ről, mégis mindenáron ki akarta nyitni, és persze az áthelyezés miatt nem találta, erre hibaüzenetet kaptam.

    Hülye ez az outlook.

    Ha erre van elképzelésed, akkor oda teszem az "elfogadom megoldásként"-fület, mert a dologhoz hozzátartozik. Ha nem, akkor az eredeti bejegyzésedhez, ahol ezt a Folders-sort megadtad.
    Mutasd a teljes hozzászólást!
  • A bezárás és újra megnyitás remek művelete sikerült a jobb egérgombbal, amikor ráálltam a legalapvetőbb "Személyes mappák" szintre az Outlookban, és jobb egérgombbal ráklikkeltem a föliratra. Ekkor hajlandó volt fölkínálni a bezárást. Átnevezni ekkor sem volt hajlandó.

    Te hogyan tudtad megadni a "Teszt"-nevet a legalapvetőbb szintnek?
    Mutasd a teljes hozzászólást!
  • No, akkor egy válasz a saját kérdésemre: amikor új .pst fájlt nyitunk, akkor a "Létrehozás"-gombot kell lenyomni, és utána rögtön meg lehet adni, hogy hogyan hívja az Outlook ezt a remek új alkalmazást. Alapértelmezésnek ugyan a "Személyes mappák"-at kínálja föl, de ez ekkor módosítható. Később már nem, csak azt lehet csinálni, hogy az ember létrehoz egy új fájlt, és mindent átpakol abba.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd