locked
[Office 2003, Excel] Excel tarih verilerinin kullanımı RRS feed

  • Soru

  • Oluşturduğum xls veya xlsx dosyalarımda belirtilen tarihleri ve günün tarihini takip ederek, dosyada belirtilen tarihlere benim belirleyeceğim gün sayısı kadar önce bir uyarı mesajı almak istiyorum. Mümkün olursa söz konusu uyarı e-mail veya desktop mesajı seklinde olabilir. Mevcut program kapsamıında yapabilir miyim ve nasıl? Aynı dosyalardaki bilgileri kullanacak ayrı bir program eklemem gerekiyorsa nasıl bulabilirim? 
    30 Kasım 2010 Salı 11:43

Yanıtlar

  • Selamlar,

    Excel bir tablolama programı olduğundan bir hatırlatma yapmaz. Ancak outlook bu görev için uygundur. Excel Hücrelerinde yer alan verilerden outlook görevi yaratarak hatırlatma yapmasını sağlayabilirsiniz. Aşağıda bu işlem için kullanılabilecek bir makro örneği veriyorum.

    Function AddToTasks(strDate As String, strText As String, DaysOut As Integer) As Boolean
     
    Dim intDaysBack As Integer
     Dim dteDate As Date
     Dim olApp As Outlook.Application
     Dim objTask As Outlook.TaskItem
     
     If (Not IsDate(strDate)) Or (strText = "") Or (DaysOut <= 0) Then
     AddToTasks = False
     GoTo ExitProc
     End If
     
    intDaysBack = DaysOut - (DaysOut * 2)
     
    dteDate = NextBusinessDay(CDate(strDate), intDaysBack)
     
    On Error Resume Next
     Set olApp = GetOutlookApp
     On Error GoTo 0
     
    If Not olApp Is Nothing Then
     Set objTask = olApp.CreateItem(3) ' task item
     
    With objTask
     .StartDate = dteDate
     .Subject = strText & ", due on: " & strDate
     .ReminderSet = True
     .Save
     End With
     
    Else
     AddToTasks = False
     GoTo ExitProc
     End If
     
     AddToTasks = True
     
    ExitProc:
     If bWeStartedOutlook Then
     olApp.Quit
     End If
     Set olApp = Nothing
     Set objTask = Nothing
     End Function
     
    Function NextBusinessDay(dteDate As Date, intAhead As Integer) As Date
     Dim dteNextDate As Date
     
    dteNextDate = DateAdd("d", intAhead, dteDate)
     
    Select Case Weekday(dteNextDate)
     
     Case 1
     dteNextDate = dteNextDate + 1
     
     Case 7
     dteNextDate = dteNextDate + 2
     End Select
     NextBusinessDay = dteNextDate
     
    End Function
     
    Function GetOutlookApp() As Object
     
    On Error Resume Next
     Set GetOutlookApp = GetObject(, "Outlook.Application")
     If Err.Number <> 0 Then
     Set GetOutlookApp = CreateObject("Outlook.Application")
     bWeStartedOutlook = True
     End If
     On Error GoTo 0
     
    End Function

    Ayrıntılı açıklama için: http://www.codeforexcelandoutlook.com/blog/2008/11/using-excel-vba-to-set-up-task-reminders-in-outlook/

    İyi çalışmalar. 


    Volkan Sert
    1 Aralık 2010 Çarşamba 01:32