Ciao a tutti
ho la necessità di importare da Outlook gli appuntamenti successivi alla data odierna ed accodarli nel db
Riporto di seguito la routine che ho scritto:
Public Sub addApp()
Dim olApp As Outlook.Application 'dopo test girare a object
Dim nms As Outlook.NameSpace
Dim myItems As Outlook.Items
'singolo elemento trovato
Dim myItem As Object
Dim obj As String
Dim sstart As Date
Dim ssend As Date
Dim lct As String
Set olApp = New Outlook.Application 'CreateObject("Outlook.Application")
Set nms = olApp.GetNamespace("MAPI")
'eliminare gli appuntamenti importati da outlook successivi alla data corrente (flag Outlook: True)
DoCmd.OpenQuery "qryAg_remAppOut"
Set myItems = nms.GetDefaultFolder(olFolderCalendar).Items
myItems.Sort "[Start]", True
For Each myItem In myItems
obj = myItem.subject
sstartdate = Format(myItem.Start, "dd/mm/yyyy")
sstarthr = Format(myItem.Start, "hh:nn")
ssendHr = Format(myItem.End, "hh:nn")
lct = myItem.Location
If Not myItem.Start < Date Then
'il planning creato in Access va di ora in ora - trovare la differenza in minuti tra ora fine e ora inizio
diff = DateDiff("n", sstarthr, ssendHr)
If diff Mod 60 <> 0 Then
n_diff = diff Mod 60
new_date_end = DateAdd("n", n_diff, myItem.End)
ssendHr = Format(new_date_end, "hh:nn")
End If
new_diff = DateDiff("h", sstarthr, ssendHr)
'verifico che non esista nessun appuntamento con l'idappuntamento nell'oggetto (app generati con Access
'ed esportati su Outlook) sia già presente
If DCount("*", "tblappuntamenti", "cstr(idappuntamento)='" & Mid(obj, 16, InStr(16, obj, " ")) & "'") < 1 Then
'verifico ora che non ci sia un appuntamento con lo stesso oggetto
'con l'esecuzione della query precedente non ce ne dvorebbe essere neanche uno
If DCount("*", "tblappuntamenti", "causale='" & obj & "' and utente_inserimento = " & DLookup("idoperatore", "tbloperatori", "operatore='" & Replace(Environ("username"), ".", " ") & "'")) < 1 Then
'per ogni ora di differenza crea un record dell'appuntamento
For i = 0 To new_diff
sSql = "INSERT INTO tblAppuntamenti (data_appuntamento, ora_appuntamento, luogo, causale, utente_inserimento) Values ('" & CVDate(sstartdate) & "', '" & sstart & "', '" & lct & "', '" & obj & "', " & DLookup("idoperatore", "tbloperatori", "operatore='" & Replace(Environ("username"), ".", " ") & "'")
Debug.Print sSql
DoCmd.RunSQL sSql '----> si blocca qui
Next i
End If
End If
Else
Exit For
End If
Next
Set olApp = Nothing
Set nms = Nothing
End Sub
Di seguito, invece, la stringa da Finestra Immediata:
INSERT INTO tblAppuntamenti (data_appuntamento, ora_appuntamento, luogo, causale, utente_inserimento) Values ('12/01/2024', '14:00', 'Microsoft Teams Meeting', 'XXXXXXXXX', 1
I campi nella tabella “tblAppuntamenti” sono i seguenti:
Ringrazio in anticipo chi mi potrà dedicare del tempo