outlook klasörlerinin listesini alma

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

Aşağıdaki kod ile outlook konumu "\\ERDEM2013\SÖZLEŞMELER" klasörünün alt klasörlerinin listesini almak istiyorum. Bilgisayardaki klasör mantığı gibi alt klasörlerin içinde başka klasörlerde olabiliyor. Yol değişkenini nasıl yazmak gerekiyor, yada başka bir yolu var mı?

Kod:
Sub AttachmentDownload3()

Cells.Clear

Dim objNS As Outlook.Namespace: Set objNS = GetNamespace("MAPI")
Dim olFolder As Outlook.MAPIFolder

yol = "ERDEM2013\SÖZLEŞMELER"

Do
Tekrar:
If objNS.Folders(yol).Folders.Count > 0 Then
    For Each kls In objNS.Folders(yol).Folders
        klslst = klslst & "{" & kls
    Next
End If

x = x + 1
deg = Split(klslst, "{")
yol = yol & "/" & deg(x)
Cells(x, 1) = deg(x)
If x = 1 And objNS.Folders(yol).Folders.Count > 0 Then GoTo Tekrar
Loop While UBound(deg) <> x

End Sub
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Ömer bey outlook klasörlerinin listesini almak istiyorum. Kod benim işimi görmüyor maalesef.
 
Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Kaynak dosyayı excel e uyarladım.
Kaynak dosya direkt excel de çalışmayacaktır.
İç içe klasörleri hesaplar bazında listeyecektir.
Kendinize göre uyarlarsınız

İç içer klasör işlemlerinde "RecurseFolders" konusunu araştırınız.


Kaynak: http://www.gregthatcher.com/Scripts/VBA/Outlook/GetListOfFolders.aspx

C++:
Dim satir, sutun As Long

Public Sub GetListOfFolders()
    On Error GoTo On_Error
   
    Dim Session As Outlook.Namespace
    Dim Report As String
    Dim Folders As Outlook.Folders
    Dim Folder As Outlook.Folder
    Dim reply As Integer
   
    Set OutApp = New Outlook.Application
    Set Namespace = OutApp.GetNamespace("MAPI")

    satir = 1
    sutun = 1
    Set Folders = Namespace.Folders
    For Each Folder In Folders
        sutun = 1
        satir = satir + 1
        Cells(satir, sutun).Value = Folder
        Call RecurseFolders(Folder, vbTab, Report)
    Next
    Dim retValue As Boolean
Exiting:
        Set Session = Nothing
        Exit Sub
On_Error:
    MsgBox "error=" & Err.Number & " " & Err.Description
    Resume Exiting

End Sub


Private Sub RecurseFolders(CurrentFolder As Outlook.Folder, Tabs, Report As String)
    Dim Table As Outlook.Table
    Dim Row As Outlook.Row
    Dim rowValues() As Variant
    Dim SubFolders As Outlook.Folders
    Dim SubFolder As Outlook.Folder
   
    satir = satir + 1
    Cells(satir, sutun).Value = CurrentFolder.Name
    sutun = sutun + 1
 
    Set SubFolders = CurrentFolder.Folders
    For Each SubFolder In SubFolders
        Call RecurseFolders(SubFolder, Tabs & vbTab, Report)
    Next SubFolder
    sutun = sutun - 1
End Sub
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Asri bey teşekkür ederim. Artık elimde işe yarar bir kod var. :)
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
@Asri bey,

Aşağıdaki kodun myNameSpace.PickFolder özelliğini Userform içinde sabit olarak gösterebilir miyiz?
Böyle bir şeyin olma ihtimali var mı?

Aslında yapmak istediğimi yukarıdaki kod ile userform'da yapacağım ama görsellik eksik kalacak.
Outlook klasörlerinde aramayı excel üzerinden yaptırmak istiyorum ve sonuçları ona göre listeleyeceğim.

Kod:
Dim myOlApp As Outlook.Application
Dim strFolderPath As String
Dim objFolder As Outlook.Folder


Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolders = myNameSpace.Folders


If Sheets("Sayfa1").[a1].Value = Empty Then
    MsgBox "Please select the folder where Call Designation Emails are filtered to.", , "Select Folder"
    Set objFolder = myNameSpace.PickFolder
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Sanırım aşağıdaki gibi çalışma ihtimali yok. Aslında istediğim gibi olmayacak.
Kullanıcı outlook klasörlerini listeleyince onu direkt olarak konumlandıramıyorum. İşin içine yine döngüler girecek.

Set olFolder = objNS.Folders("ERDEM2013\SÖZLEŞMELER")

O zaman en kısa yol myNameSpace.PickFolder ile seçtirmek diye düşünüyorum.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Sanırım aşağıdaki gibi çalışma ihtimali yok. Aslında istediğim gibi olmayacak.
Kullanıcı outlook klasörlerini listeleyince onu direkt olarak konumlandıramıyorum. İşin içine yine döngüler girecek.

Set olFolder = objNS.Folders("ERDEM2013\SÖZLEŞMELER")

O zaman en kısa yol myNameSpace.PickFolder ile seçtirmek diye düşünüyorum.
Bu klasör inbox ın altında bir klasörü mü?
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Genel bir program hazırlamak istiyorum. Evden çalışıldığı zaman outlook maillerinde indexleme sorunu oluyor ve maillerde arama yapamıyorsun. Kullanıcı istediği klasörde arama yapabilsin. Herkesin arşivlemesi kendi keyfine göre oluyor. Bu sorunu aşmak için excel'den arama yaptırmayı düşündüm. Sorun klasörleri buldurmaktı. Pickfolder özelliği en ideali gibi duruyor şu anda.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Genel bir program hazırlamak istiyorum. Evden çalışıldığı zaman outlook maillerinde indexleme sorunu oluyor ve maillerde arama yapamıyorsun. Kullanıcı istediği klasörde arama yapabilsin. Herkesin arşivlemesi kendi keyfine göre oluyor. Bu sorunu aşmak için excel'den arama yaptırmayı düşündüm. Sorun klasörleri buldurmaktı. Pickfolder özelliği en ideali gibi duruyor şu anda.
Bu şekilde bir çözüm çok kullanışlı olmaz.
Bunun yerine indexleme sorunlarını çözmek daha doğru olmaz mı?

Exchange mi? Pop3 mü kullanılıyor?

Öncelikle benim baş belam Office 2013 :) 2013 üzeri bir sürüm kullanılabilir.
İndexler sııfrlanıp bir iki günde sürse yeniden indexlenebilir.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Bu şekilde bir çözüm çok kullanışlı olmaz.
Bunun yerine indexleme sorunlarını çözmek daha doğru olmaz mı?

Exchange mi? Pop3 mü kullanılıyor?

Öncelikle benim baş belam Office 2013 :) 2013 üzeri bir sürüm kullanılabilir.
İndexler sııfrlanıp bir iki günde sürse yeniden indexlenebilir.
Exchange kullanıyoruz. Defalarca söyledik ama çözüm üretilemedi. Artık canıma tak etti diyebilirim.
Şirket 2019 ve ofis 365 lisansı almak istemiyor.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Exchange kullanıyoruz. Defalarca söyledik ama çözüm üretilemedi. Artık canıma tak etti diyebilirim.
Şirket 2019 ve ofis 365 lisansı almak istemiyor.
Yani 3-5 mail sorun olmaz ama binlerce mailde bilemiyorum. Çok kullanışlı gelmedi bana.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Ücretli 14 gün denemesi var. Aramalar için bu tür bir yardımcı araç kullanılabilir.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Asri bey teşekkür ederim. Şirkete bu programı önereceğim.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri bey teşekkür ederim. Şirkete bu programı önereceğim.
Programı denemedim. Ancak prof. bir çözüm gibi duruyor. Standart sürüm iş görecektir.
Şirket bir lisans için 69 USD öder mi bilemem.
En azından 14 günlük deneme sürümü yüklenip performansı test edilebilir.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,241
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
İletileri Ful-Text Search özelliği olan bir veritabanına (Postgresql ücretsiz) kaydetmeyi düşünebilirsiniz.

Bakış açım bazen farklı olabilir... :)


.
 
Üst