• Ingrandisci carattere
  • Dimensione predefinita
  • Riduci carattere
Home Esempi di codice VBA: modificare il campo 'Fax' nei Contatti
Errore
  • XML Parsing Error at 1:1422. Error 9: Invalid character

VBA: modificare il campo 'Fax' nei Contatti

E-mail Stampa

Finalità

In questo articolo viene presentato un esempio di codice VBA da utilizzare per intervenire sui campi contenenti un numero di Fax all'interno dei Contatti esistenti in una cartella.

L'utilità immediata di questa procedura è quella di modificare il numero di fax affinché Outlook non lo consideri come un indirizzo valido, e di conseguenza non lo presenti all'interno della Rubrica come indirizzo aggiuntivo oltre all'email. Operativamente ogni numero di Fax viene prefissato con una serie di caratteri alfanumerici (in questo caso la parola "fax:"). Il numero "123 123 123" diventerà quindi "fax:123 123 123".

 

 

Breve descrizione della procedura

Il codice è scritto all'interno di una procedura indipendente, e per finalità didattiche non è particolarmente ottimizzato.
La procedura, dopo aver dichiarato le variabili necessarie, presenta una finestra di dialogo attraverso la quale l'utente sceglie la cartella dei Contatti sulla quale effettuare l'intervento di modifica. Dopo aver verificato la validità della cartella il codice inizia un loop su tutti gli elementi contenuti nella cartella ma effettua un intervento solamente sugli elementi di tipo "Contatto" (oggetto ContactItem, afferente alla classe olContact).
Per ciascun elemento vengono verificati tre campi che potenzialmente possono contenere un numero di fax:
 "Fax (ufficio)" (proprietà .BusinessFaxNumber),
 "Fax (Abitazione)" (proprietà .HomeFaxNumber) e
 "Altro Fax" (proprietà .OtherFaxNumber).

Per ciascuno di essi si controlla la presenza di almeno un carattere diverso dallo spazio e che il numero non sia già prefissato, e nel caso viene aggiunta la parola "fax:" prima del numero.
Se è stato fatto almeno un intervento su uno dei tre numeri il Contatto viene esplicitamente salvato.
Al termine della procedura viene presentata una finestra di dialogo che indica la fine del processo ed informa su quanti Contatti è stata effettuata la modifica.

 

Public Sub ModificaNumeroFax()
  'La procedura inserisce prima di ogni numero di fax
  ' una serie di caratteri alfanumerici, evitando che
  ' Outlook li consideri come indirizzi validi.


  Dim objApp As Application
  Dim objNS As NameSpace
  Dim objFolder As MAPIFolder
  Dim objItems As Items
  Dim objItem As Object
  Dim sFax As String, bSalvataggio As Boolean
  Dim lModificati As Long

  Set objApp = CreateObject("Outlook.Application")
  Set objNS = objApp.GetNamespace("MAPI")
 'Richiede la cartella sulla quale operare.
  Set objFolder = objNS.PickFolder
  If Not objFolder Is Nothing Then

    'Effettua un loop su tutti gli elementi della cartella indicata.
    Set objItems = objFolder.Items
    For Each objItem In objItems
      'Verifica che la modifica venga eseguita solamente
      ' su un elemento di tipo Contatto.

      If objItem.Class = olContact Then
        'Resetta il flag che indica la necessità di salvare.
        bSalvataggio = False

        'Effettua i controlli sul Fax (ufficio).
        sFax = objItem.BusinessFaxNumber
        'Verifica se il campo contiene almeno qualche carattere
        ' oppure è già stato modificato in precedenza.

        If Len(Trim(sFax)) > 0 And LCase$(Left$(sFax, 4)) <> "fax:" Then
            sFax = "fax:" & sFax
            objItem.BusinessFaxNumber = sFax
            bSalvataggio = True
        End If

        'Effettua i controlli sul Fax (abitazione).
        sFax = objItem.HomeFaxNumber
        'Verifica se il campo contiene almeno qualche carattere
        ' oppure è già stato modificato in precedenza.

        If Len(Trim(sFax)) > 0 And LCase$(Left$(sFax, 4)) <> "fax:" Then
            sFax = "fax:" & sFax
            objItem.HomeFaxNumber = sFax
            bSalvataggio = True
        End If

        'Effettua i controlli su Altro Fax.
        sFax = objItem.OtherFaxNumber
        'Verifica se il campo contiene almeno qualche carattere
        ' oppure è già stato modificato in precedenza.

        If Len(Trim(sFax)) > 0 And LCase$(Left$(sFax, 4)) <> "fax:" Then
            sFax = "fax:" & sFax
            objItem.OtherFaxNumber = sFax
            bSalvataggio = True
        End If

        'Se c'è stata almeno una modifica allora
        ' salva il Contatto.

        If bSalvataggio = True Then
          'Salva il Contatto.
          objItem.Save
          'Aggiorna il contatore.
          lModificati = lModificati + 1
        End If
      End If
    Next
  End If

  Set objItems = Nothing
  Set objItem = Nothing
  Set objFolder = Nothing
  Set objNS = Nothing
  Set objApp = Nothing

  MsgBox "Procedura terminata. Sono stati modificati " _
   & lModificati & " contatti.", vbInformation
 

End Sub
 

Ultimo aggiornamento ( Venerdì 03 Settembre 2010 16:38 )