Outlook-vba - Riptutorial

Transcription

outlook-vba#outlookvba

SommarioDi1Capitolo 1: Iniziare con look Visual Basic, Applications Edition3Argomenti avanzati3Capitolo 2: Introduzione Parte 1: accesso al Visual Basic Editor di Outlook4introduzione4Examples41.1 Accesso al Visual Basic Editor di Outlook 200341.2 Accesso al Visual Basic Editor in Outlook 2007 e versioni successive41.3 Introduzione a Visual Basic Editor81.4 Cosa dovresti ricordare da questa parte del tutorialCapitolo 3: Introduzione Parte 2: archivi e cartelle di livello superiore1314introduzione14Examples142.1 Conoscenza pregressa prevista142.2 Negozi142.3 Cartelle di primo livello162.4 Cosa dovresti ricordare da questo tutorial17Capitolo 4: Introduzione Parte 3: archivi e tutte le loro cartelle18introduzione18Examples183. 0 Contenuti183.1 Funzione GetFldrNames () che è necessaria per molte delle macro dimostrative183.2 Riferimento a una cartella predefinita193.3 Riferimento a qualsiasi cartella all'interno di qualsiasi negozio accessibile203.4 Elenco dei nomi di ogni cartella in ogni negozio accessibile213.5 Spostamento di una cartella da una cartella principale a un'altra22

3.6 Cosa dovresti ricordare da questa parte del tutorialTitoli di coda2324

DiYou can share this PDF with anyone you feel could benefit from it, downloaded the latest versionfrom: outlook-vbaIt is an unofficial and free outlook-vba ebook created for educational purposes. All the content isextracted from Stack Overflow Documentation, which is written by many hardworking individuals atStack Overflow. It is neither affiliated with Stack Overflow nor official outlook-vba.The content is released under Creative Commons BY-SA, and the list of contributors to eachchapter are provided in the credits section at the end of this book. Images may be copyright oftheir respective owners unless otherwise specified. All trademarks and registered trademarks arethe property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct noraccurate, please send your feedback and corrections to e1

Capitolo 1: Iniziare con Outlook-VBAOsservazioniQuesta sezione fornisce una panoramica di cosa è outlook-vba e perché uno sviluppatorepotrebbe volerlo utilizzare.Dovrebbe anche menzionare qualsiasi argomento di grandi dimensioni all'interno di Outlook-VBAe collegarsi agli argomenti correlati. Poiché la documentazione di outlook-vba è nuova, potrebbeessere necessario creare versioni iniziali di tali argomenti correlati.ExamplesintroduzioneAttualmente ci sono tre argomenti che introducono Outlook VBA e almeno altri tre sono previsti.La prima parte descrive come accedere a Visual Basic Editor.Se sei un utente di Outlook 2003 e un utente di Excel VBA, imparerai poco per questa partepoiché l'accesso all'Editor di Visual Basic di Outlook è lo stesso dell'accesso a Excel Visual BasicEditor.Con Outlook 2007 e versioni successive, la scheda Sviluppatore . che dà accesso a Visual BasicEditor, non viene visualizzato per una nuova installazione. Per visualizzare la scheda Sviluppatore, è necessario eseguire un numero di passaggi descritti in questa parte. Non c'è codice in questaparte.Le parti 2 e 3 descrivono negozi e cartelle in cui sono memorizzati i dati di Outlook. Potrestipensare a loro come all'equivalente delle cartelle di lavoro e dei fogli di lavoro di Excel. Ladivisione tra le parti 2 e 3 è alquanto arbitraria. La parte 2 descrive negozi e cartelle e includemacro per visualizzare i nomi di tutti gli archivi accessibili e le cartelle di livello superiore all'internodi tali negozi. La parte 3 include la macro per l'accesso alle cartelle di livello inferiore. Una coppiadi macro utilizza la ricorsione che un nuovo programmatore potrebbe trovare difficile dacomprendere. Il lettore dovrebbe mirare a comprendere tutto il codice nella Parte 2. Sarebbecomunque legittimo capire cosa fa quella coppia di macro ma non capisce come raggiungono illoro obiettivo.La parte 4, la prossima parte da scrivere, introdurrà MailItems che contengono e-mail. La parte 3include una macro per spostare una cartella da un genitore a un altro, ma la maggior parte dellemacro operano sugli oggetti contenuti all'interno delle cartelle e non delle cartelle stesse. Agiudicare dalle domande su Stack Overflow, MailItems sono di maggior interesse per iprogrammatori.La parte 5 presenterà CalendarItems che contengono appuntamenti. La parte 6 introdurrà lacreazione di nuove cartelle di lavoro Excel da Outlook e la lettura e l'aggiornamento delle cartellehttps://riptutorial.com/it/home2

di lavoro esistenti. La parte 7 introdurrà gli eventi a meno che non venga identificato un argomentoimmediatamente più importante.È importante capire che questa è un'introduzione al VBA di Outlook, non un'introduzione a VBA.La Parte 2 fornisce alcune indicazioni su dove ottenere informazioni su VBA, ma poiché la lingua èla stessa in tutti i prodotti Office, una descrizione di essa appartiene al di fuori di questaintroduzione al VBA di Outlook.Outlook Visual Basic, Applications EditionVisual Basic for Applications (VBA) è il linguaggio macro di tutti i prodotti Microsoft Office ed èessenzialmente identico in tutti i prodotti Office. Ciò che differisce da prodotto a prodotto è ilmodello Object. Excel ha cartelle di lavoro, fogli di lavoro e celle. L'accesso ha tabelle e attributi.Outlook ha cartelle, e-mail e appuntamenti. È il modello a oggetti che rende VBA di Excel diversodal VBA di Outlook.Argomenti avanzatiLe varie parti dell'introduzione mirano a fornire le informazioni necessarie a qualsiasiprogrammatore nuovo per VBA di Outlook. Gran parte del codice è stato originariamentesviluppato con Outlook 2003 ed è stato testato con Outlook 2016. Dovrebbe funzionare invariatocon qualsiasi versione intermedia.Nuove funzionalità sono state introdotte da Outlook 2003 a cui i programmatori vorranno / avrannobisogno di accedere. È previsto che vengano scritti "argomenti avanzati" per descrivere questafunzionalità.Leggi Iniziare con Outlook-VBA online: home3

Capitolo 2: Introduzione Parte 1: accesso alVisual Basic Editor di OutlookintroduzioneAccesso al Visual Basic Editor di Outlook, inserimento del primo modulo e ridenominazione di quelmodulo.Conoscenza precedente prevista : sei un utente di Outlook.Con Outlook 2003, è possibile selezionare immediatamente Visual Basic Editor. Con le versionisuccessive, è necessario aggiungere la scheda Sviluppatore prima di poter selezionare VisualBasic Editor.Examples1.1 Accesso al Visual Basic Editor di Outlook 2003Tutte le immagini provengono dalla versione inglese di Outlook. So che alcuni nomi sono tradottinella lingua locale per altre versioni e presumo che la maggior parte dei nomi per le schede siatradotta. Probabilmente la sequenza di schede è invariata nelle versioni non inglesi. In alternativa,dovrai controllare le tue schede e decidere quale sarebbe l'equivalente, ad esempio, "Strumenti"Con Outlook 2003 aperto, la parte superiore della finestra potrebbe essere simile a:Fai clic su Strumenti e sposta il cursore in basso su Macro per vedere:Spostare il cursore verso destra e verso il basso e fare clic su Visualesci dalle selezioni e fai clic su Alt F11 .Basic Editor. In alternativa,1.2 Accesso al Visual Basic Editor in Outlook 2007 e versioni successivehttps://riptutorial.com/it/home4

Tutte le immagini in questa sezione provengono dalla versione inglese di Outlook 2016. So chealcuni nomi sono tradotti nella lingua locale per altre versioni e presumo che la maggior parte deinomi per le schede sia tradotta. Probabilmente la sequenza di schede è invariata nelle versioninon inglesi. In alternativa, dovrai controllare le tue schede e decidere quale sarebbe l'equivalente,ad esempio, "Strumenti"Le finestre di Outlook 2010 sono formattate in modo diverso ma sostanzialmente identiche.Comprendo che altre versioni sono essenzialmente identiche a Outlook 2016.La parte superiore della finestra principale potrebbe essere simile a:Fai clic su File , a sinistra, per ottenere quanto segue sulla sinistra della finestra:Fai clic su Opzioni , in basso, per ottenere quanto segue sulla sinistra della finestra:https://riptutorial.com/it/home5

Fai clic su Personalizzafinestra:barra multifunzionehttps://riptutorial.com/it/home, a metà. per ottenere quanto segue sulla destra della6

Fai clic sulla casella accanto a "Sviluppatore", in basso, per ottenere un segno di spunta, quindi faiclic su OK , in basso. La finestra principale riapparirà ma sarà cambiata in:Fai clic sulla nuova scheda Sviluppatore per ottenere:https://riptutorial.com/it/home7

Fare clic su VisualBasic, a sinistra, per selezionare il Visual Basic Editor.1.3 Introduzione a Visual Basic EditorLe immagini in questa sezione provengono tutte da Outlook 2016 ma potrebbero provenire daOutlook 2003. Outlook VBA potrebbe essere cambiato nel corso degli anni ma ai miei occhil'Editor VBA non ha. Qualunque versione tu abbia, vedrai qualcosa del tipo:https://riptutorial.com/it/home8

Sopra c'è un " " contro " Progetto1 ". Se hai un " " cliccalo e poi il " " contro "Oggetti MicrosoftOutlook" per ottenere:https://riptutorial.com/it/home9

La finestra delle proprietà potrebbe non essere presente o, se presente, potrebbe essereposizionata altrove all'interno della finestra dell'editor VB. Non ne abbiamo bisogno per ilmomento. Puoi chiuderlo facendo clic sulla croce e puoi usare F4 per renderlo nuovamente visibilein qualsiasi momento. Normalmente non è visibile perché non ho bisogno di accedere a Proprietàla maggior parte del tempo e il mio elenco di Explorer progetto occupa la maggior parte del latosinistro. Ti suggerisco di tenerlo visibile fino a quando diventa una seccatura.Se si fa clic su ThisOutlookSession , l'area grigia diventerà bianca oppure, come nell'immaginesottostante, comparirà una finestra di codice all'interno dell'area grigia:https://riptutorial.com/it/home10

Puoi digitare qualsiasi codice in questa finestra di codice. Tuttavia, le routine di eventi (che sonodiscusse verso la fine di questo tutorial) devono essere digitate in questa finestra di codice. Viconsiglio di riservare l'area del codice ThisOutlookSession per le routine di eventi.Invece, fai clic su Inserisci per ottenere:https://riptutorial.com/it/home11

Clicca sul modulo per aggiungere un modulo:https://riptutorial.com/it/home12

Il mio nuovo modulo si chiama "Module1". Se la tua versione di Outlook è una versione noninglese, il tuo modulo avrà un nome equivalente nella tua lingua. È possibile aggiungere piùmoduli che verranno denominati "Module2", "Module3" e così via.Se sto creando una cartella di lavoro di Excel, per la quale ho solo bisogno di un modulo, potreilasciare il nome come "Module1". Ma con Outlook, tutti i miei macro devono andare qui, quindi homolti moduli. Nel corso degli anni ho scritto molte routine che riuso ripetutamente. Ho un moduloper le routine VBA generali, un altro per le routine per accedere a Excel, un altro per le routineVBA di Outlook e quindi un modulo per attività di Outlook che eseguo con macro. Se guardi lafinestra Proprietà vedrai che l'unica proprietà di un modulo è il suo nome. Fare clic su "Module1"su "Name" e modificarlo con un nome valido (inizia con una lettera, contiene lettere e numeri,ecc.). Si verificano strani errori se un modulo e una procedura hanno lo stesso nome, quindi avviotutti i nomi dei moduli con "Mod" e non utilizzo questo prefisso per le mie procedure. Perché nonrinominare questo modulo "ModIntro" o simile pronto per la parte successiva di questo tutorial?Queste aree di codice e come le aree di immissione dei dati di qualsiasi editor. Fare clic sull'areadel codice per selezionarlo e digitare il codice o incollare il codice copiato da altrove, come laprossima sezione di questo tutorial.1.4 Cosa dovresti ricordare da questa parte del tutorial La tua versione di Outlook ha avuto bisogno di aggiungere la scheda Sviluppo? In tal caso,non sarà necessario ripetere questa procedura fino a quando non si avrà una nuovainstallazione di Outlook. Torna qui quando succede. Ricorda come accedere al Visual Basic Editor. Ricorda come creare e rinominare un modulo.Leggi Introduzione Parte 1: accesso al Visual Basic Editor di Outlook 13

Capitolo 3: Introduzione Parte 2: archivi ecartelle di livello superioreintroduzionePrima parte di un'introduzione ai negozi e alle cartelle che contengono. Contiene macro pervisualizzare (1) i nomi dei negozi accessibili e (2) i nomi dei negozi accessibili e le cartelle di livellosuperiore al loro interno.Examples2.1 Conoscenza pregressa prevista Sei un utente di Outlook e comprendi termini come "email", "tempo di ricezione", "oggetto" e"Riquadro delle cartelle". Sai come accedere a Visual Basic Editor di Outlook e creare un modulo. Vedi IntroduzioneParte 1 se necessario. Hai almeno una conoscenza di base di VBA. Dichiaro Subroutine e variabili senzaspiegazione. Uso Withs, Ifs e Loops senza spiegazione. Ti dico che qualcosa è unacollezione. Ti dico di copiare il codice su un modulo ed eseguirlo. Esistono molti tutorialonline, anche se la maggior parte sono per Excel VBA e si concentrano maggiormentesull'uso della lingua con Excel rispetto alla lingua. La ricerca di "tutorial VBA" fa apparirealcuni che si concentrano sulla lingua più dell'applicazione che sembrano soddisfacenti. Non è necessario conoscere il modello a oggetti di Outlook; questo tutorial ti presenta unapiccola parte di esso.2.2 NegoziOutlook memorizza le e-mail, gli elementi del calendario, le note, le attività e così via in file noticome Negozi . Se guardi il tuo pannello delle cartelle vedrai qualcosa come:AaaaaaaaaaInboxDraftsDeleted Items: :BbbbbbbbbbInboxDraftsDeleted Items: :Cccccccccc: :https://riptutorial.com/it/home14

"Aaaaaaaaaa", "Bbbbbbbbbb" e "Cccccccccc" sono i nomi utente o di visualizzazione dei Negozi.Ho sempre accettato le impostazioni predefinite di Outlook per questi nomi che sono cambiati nelcorso degli anni. Una volta che il default era il mio nome ora è il mio indirizzo email. Il nome fileper questi negozi potrebbe essere lo stesso ma con un'estensione come PST o OST o potrebbeessere qualcosa di completamente diverso. Una macro VBA richiede il nome utente per accederea un negozio e non riguarda i nomi dei file o l'estensione.Puoi avere quanti negozi desideri. Ho "Outlook data file" che è stato creato per me quando hoinstallato Outlook. Quando ho aggiunto account per i miei indirizzi email, Outlook ha creato nuovinegozi denominati per l'indirizzo di posta elettronica come "JohnDoe@hotmail.com" e"DoeJohn@gmail.com". Per ridurre le dimensioni del mio negozio principale, salvo vecchie emailnei negozi con nomi come "Archivio 2015".Se sei un utente aziendale, puoi avere accesso a negozi condivisi o ai negozi di colleghi.Le macro sottostanti mostrano tre diversi modi di elencare i negozi a cui è possibile accedere. Tisuggerisco di creare un nuovo modulo per contenere il codice sottostante e di utilizzare F4 peraccedere alle proprietà del modulo in modo da poterlo chiamare "ModIntro" o un altro nome di tuascelta. Se hai completato la parte 1 di questa serie, avrai già questo modulo.Copia queste macro in un modulo e verifica che ciascuna fornisca lo stesso risultato.Sub ListStores1()Dim InxStoreCrnt As IntegerDim NS As NameSpaceDim StoresColl As FoldersSet NS MAPI")Set StoresColl NS.FoldersFor InxStoreCrnt 1 To StoresColl.CountDebug.Print StoresColl(InxStoreCrnt).NameNextEnd SubSub ListStores2()Dim StoresColl As StoresDim StoreCrnt As StoreSet StoresColl Session.StoresFor Each StoreCrnt In StoresCollDebug.Print StoreCrnt.DisplayNameNextEnd SubSub ListStores3()Dim InxStoreCrnt As LongWith Application.SessionFor InxStoreCrnt 1 To .Folders.CountDebug.Print /it/home15

NextEnd WithEnd SubTroverete con VBA che ci sono spesso diversi metodi per ottenere lo stesso effetto. Sopra homostrato tre metodi per accedere ai negozi. Non è necessario ricordarli tutti - scegli il tuo preferito- ma devi essere consapevole del fatto che ci sono diversi metodi perché altre persone, di cuipotresti aver bisogno di studiare il codice, avranno diversi preferiti.Le variabili StoresColl nelle macro ListStores1() e ListStores2() sono entrambe raccolte macontengono diversi tipi di oggetto: Store e Folder . Un oggetto Store può solo fare riferimento a unfile sul disco. Una Folder può fare riferimento a un file su disco ma può anche fare riferimento acartelle all'interno di un archivio come "Posta in arrivo" e "Posta inviata". Stores , Folders , Store eFolder fanno tutti parte del modello a oggetti di Outlook. Questa serie di tutorial ti introduce almodello ma non è una definizione formale. Se vuoi una definizione formale, digita "outlook vbaobject model" nel tuo motore di ricerca preferito. Assicurati di guardare la versione VBA delmodello.2.3 Cartelle di primo livelloNell'esempio del riquadro Cartelle sopra riportato, elenco solo tre cartelle standard: "Posta inarrivo", "Bozze" e "Elementi eliminati". Esistono altre cartelle standard e puoi creare tutte lecartelle che desideri. Alcune persone creano cartelle in Posta in arrivo ma preferisco creare nuovecartelle allo stesso livello di Inbox. Le tue cartelle possono avere sotto-cartelle che possono averele loro sottocartelle a qualsiasi profondità.La seguente macro produrrà un elenco del modulo:AA1A2A3BB1B2CC1C2C3C4dove A, B e C sono negozi e A1, B1, C1 e così via sono cartelle all'interno di A, B e C. Se A1, B1,C1 e così via hanno sottocartelle, non saranno elencate da questa macro. L'accesso a cartelle piùnidificate sarà trattato nella prossima parte di questo tutorial.Sub ListStoresAndTopLevelFolders()Dim FldrCrnt As FolderDim InxFldrCrnt As LongDim InxStoreCrnt As Longhttps://riptutorial.com/it/home16

Dim StoreCrnt As FolderWith Application.SessionFor InxStoreCrnt 1 To .Folders.CountSet StoreCrnt .Folders(InxStoreCrnt)With StoreCrntDebug.Print .NameFor InxFldrCrnt .Folders.Count To 1 Step -1Set FldrCrnt .Folders(InxFldrCrnt)With FldrCrntDebug.Print "" & .NameEnd WithNextEnd WithNextEnd WithEnd Sub2.4 Cosa dovresti ricordare da questo tutorial Un negozio è un file in cui Outlook memorizza le e-mail, gli elementi del calendario, le note,le attività e così via. Un archivio può contenere cartelle standard di Outlook come "Posta in arrivo" e "Postainviata". Un negozio può contenere anche cartelle create dall'utente. Entrambe le cartelle standard di Outlook e le cartelle create dall'utente possono conteneresottocartelle create dall'utente, sottocartelle secondarie e così via a qualsiasi profondità. Come elencare i negozi. Come elencare i negozi e le cartelle di livello superiore all'interno di tali negozi.Confessione: non ricordo nessuno dei "come". Ho subroutine e funzioni che ricordano per me.Leggi Introduzione Parte 2: archivi e cartelle di livello superiore -livellosuperiorehttps://riptutorial.com/it/home17

Capitolo 4: Introduzione Parte 3: archivi etutte le loro cartelleintroduzioneCompleta l'introduzione ai negozi e alle cartelle iniziati nella parte 2 di questo tutorialConoscenza precedente prevista : hai studiato parte 2 di questo tutorial o conosci già i suoicontenuti.Examples3. 0 Contenuti Come fare riferimento a qualsiasi cartella accessibile. Come ottenere il nome completo di una cartella di riferimento. Un paio di routine che insieme elenceranno tutte le cartelle all'interno di ogni negozioaccessibile. Una routine per spostare una cartella da una cartella principale a un'altra.3.1 Funzione GetFldrNames () che è necessaria per molte delle macrodimostrativeUn certo numero di macro dimostrative all'interno di questa parte richiede una funzione chespiegherò più avanti. Per il momento, copia semplicemente GetFldrNames() in un modulo adatto.Uso frequentemente questa funzione e la manterrò, e altre simili a quelle che uso in molte diversemacro, in un modulo chiamato "ModGlobalOutlook". Ti potrebbe piacere fare lo stesso. Inalternativa, potresti preferire di mantenere la macro con tutte le altre macro all'interno di questaserie di tutorial; puoi spostarlo in seguito se cambi idea.Public Function GetFldrNames(ByRef Fldr As Folder) As String()' * Fldr is a folder. It could be a store, the child of a store,'the grandchild of a store or more deeply nested.' * Return the name of that folder as a string array in the sequence:'(0) StoreName (1) Level1FolderName (2) Level2FolderName .' 12Oct16' 20Oct16'DimDimDimDimDimDimCodedRenamed from GetFldrNameStr and amended to return a string arrayrather than a stringFldrCrnt As FolderFldrNameCrnt As StringFldrNames() As StringFldrNamesRev() As StringFldrPrnt As FolderInxFN As Longhttps://riptutorial.com/it/home18

Dim InxFnR As LongSet FldrCrnt FldrFldrNameCrnt FldrCrnt.NameReDim FldrNamesRev(0 To 0)FldrNamesRev(0) Fldr.Name' Loop getting parents until FldrCrnt has no parent.' Add names of Fldr and all its parents to FldrName as they are foundDo While TrueSet FldrPrnt NothingOn Error Resume NextSet FldrPrnt Nothing' Ensure value is Nothing if following statement failsSet FldrPrnt FldrCrnt.ParentOn Error GoTo 0If FldrPrnt Is Nothing Then' FldrCrnt has no parentExit DoEnd IfReDim Preserve FldrNamesRev(0 To UBound(FldrNamesRev) 1)FldrNamesRev(UBound(FldrNamesRev)) FldrPrnt.NameSet FldrCrnt FldrPrntLoop' Copy names to FldrNames in reverse sequence so they end up in the correct sequenceReDim FldrNames(0 To UBound(FldrNamesRev))InxFN 0For InxFnR UBound(FldrNamesRev) To 0 Step -1FldrNames(InxFN) FldrNamesRev(InxFnR)InxFN InxFN 1NextGetFldrNames FldrNamesEnd Function3.2 Riferimento a una cartella predefinitaIn TestDefaultFldr() ho impostato Fldr sulla Posta in arrivo predefinita. La costante olFolderInboxpuò essere sostituita da altri valori che danno accesso a qualsiasi cartella predefinita. Se si digitaSet Fldr Session.GetDefaultFolder( , l'editor VB visualizzerà un elenco a discesa di tutti i valoripossibili.Sub TestDefaultFldr()Dim Fldr As FolderSet Fldr Session.GetDefaultFolder(olFolderInbox)Debug.Print Join(GetFldrNames(Fldr), " ")End SubSul mio portatile, TestDefaultFldr() visualizza il Outlook data file Inbox che è stato una sorpresa.Ho scritto GetFldrNames(Fldr) per assicurarmi che la cartella a cui avevo fatto riferimento fossequella che volevo. Ho avuto accesso alla posta in arrivo predefinita e ho scoperto che era vuoto!Memorizza "File di dati di output" fornito con l'installazione predefinita e l'ho ignorato poichéhttps://riptutorial.com/it/home19

Outlook aveva creato un negozio per ciascuno dei miei account di posta elettronica. È stato solodopo aver scoperto la mia casella di posta in arrivo predefinita che ho pensato a come Outlookavrebbe saputo quale dei miei account e-mail era l'account che avrei voluto come predefinito.Delle cartelle standard di Outlook, non esiste alcun valore predefinito o il valore predefinito è in"File dati di output". Potrebbe essere possibile cambiare quale Posta in arrivo è la Posta in arrivopredefinita ma non ho indagato perché non sono sicuro di quale dei miei account di postaelettronica farei il default se cambiassi. Ricorda che tutti gli elementi del calendario, le attività ecosì via si trovano all'interno di "file di dati di Outlook" e assicurati di includere "Outlook.pst"nell'elenco degli archivi.La maggior parte degli oggetti di Outlook ha la proprietà Parent . GetFldrNames(Fldr) registra ilnome della cartella in un array prima di provare ad accedere al suo genitore. Si loop aggiungendonomi alla fine della matrice fino a quando non raggiunge lo store. Il negozio non ha un genitorequindi il tentativo di accesso fallisce. La sequenza di nomi nell'array viene invertita e quindirestituita al chiamante. Ho usato Join per trasformare la matrice di nomi in una stringavisualizzabile.3.3 Riferimento a qualsiasi cartella all'interno di qualsiasi negozio accessibileTestFldrChain()dimostra come fare riferimento a qualsiasi cartella all'interno di qualsiasi archivioaccessibile:Sub TestFldrChain()Dim Fldr As FolderSet Fldr Folders("A213")Debug.Print Join(GetFldrNames(Fldr), " ")End SubIn TestFldrChain() : A è il nome di un negozio; A2 è il nome di una cartella all'interno di A; A21 è ilnome di una cartella all'interno di A2 e A213 è il nome di una cartella all'interno di A21.Cosa sta succedendo qui?Sessionha una proprietà Folders che è una lista di tutti i negozi accessibili., che ho utilizzato nella parte 2 di questo tutorial, mi consente di scorrerei negozi in sequenza quando non conosco i loro nomi. Session.Folders("A") mi consente diaccedere a una cartella quando conosco il suo � una cartella e anch'essa ha una proprietà Folders .Session.Folders("A").Folders("A2")mi danno accesso alla cartella "A2" nel negozio "A".Posso incatenare tante Folders("x") se necessario per raggiungere qualsiasi cartella. Se la catenaè troppo lunga per una linea, puoi dividere l'istruzione su più righe come ho fatto io.https://riptutorial.com/it/home20

Cerca la cartella più profondamente annidata all'interno dell'installazione e sostituisci A, A2, A21 eA213 con i nomi del tuo negozio e delle tue cartelle. Aumentare o diminuire il numero di cartellenella catena secondo necessità.Se aggiorni ed esegui TestFldrChain() , verrà TestFldrChain() quanto segue ad eccezione del fattoche A, A2 e così via saranno stati sostituiti dai nomi delle tue cartelle:A A2 A21 A2133.4 Elenco dei nomi di ogni cartella in ogni negozio accessibileNella parte 2, ti è stato mostrato come elencare ogni archivio accessibile e le cartelle di livellosuperiore all'interno di ogni negozio. Ciò comportava un ciclo attraverso i negozi e quindi un cicloper ogni negozio attraverso le sue cartelle. Sopra hai visto come fare riferimento a una cartellaconosciuta a qualsiasi profondità all'interno della gerarchia delle cartelle. Ciò ha comportato ilconcatenamento di tutte le Folders("x") necessarie per raggiungere la cartella.Ora voglio elencare ogni cartella, a qualsiasi profondità, all'interno di ogni negozio. La tecnica dicodifica più semplice per risolvere questo tipo di problema in cui è necessario spostare catene dilunghezze diverse è la ricorsione . Se sei un programmatore serio in un'altra lingua o strumento,potresti già conoscere la ricorsione. Se hai ambizioni di essere un programmatore serio, alla finedovrai capire la ricorsione, ma non necessariamente oggi. "La ricorsione" è uno di quei concettiche molti trovano difficile da afferrare all'inizio. Puoi digitare "Ricorsione" nel tuo motore di ricercapreferito e leggere i vari tentativi di spiegare questo concetto. In alternativa, puoi accettare questimacro lavori, ma non preoccuparti di come funzionano.Nota il commento in ListStoresAndAllFolders() : queste macro richiedono un riferimento a"Microsoft Scripting Runtime". Fai clic su Strumenti nella barra delle schede nella parte superioredella finestra di VB Editor, quindi fai clic su Riferimenti . Otterrai un elenco di tutti i riferimentidisponibili (librerie). Alcuni in cima saranno già spuntati. Il resto è in ordine alfabetico. Scorril'elenco e fai clic sulla casella a sinistra di "Microsoft Scripting Runtime" per ottenere un segno dispunta. Quindi fare clic su OKSub ListStoresAndAllFolders()' Displays the name of every accessible store' Under each store, displays an indented list of all its folders' Technique for locating desktop from answer by Kyle:' http://stackoverflow.com/a/17551579/973283' Needs reference to “Microsoft Scripting Runtime” if "TextStream"' and "FileSystemObject" are to be recognisedDimDimDimDimDimDimDimFileOut As TextStreamFldrCrnt As FolderFso As FileSystemObjectInxFldrCrnt As LongInxStoreCrnt As LongPath As StringStoreCrnt As Folderhttps://riptutorial.com/it/home21

Path top")Set Fso CreateObject("Scripting.FileSystemObject")Set FileOut Fso.CreateTextFile(Path & "\ListStoresAndAllFolders.txt", True)With Application.SessionFor InxStoreCrnt 1 To .Folders.CountSet StoreCrnt .Folders(InxStoreCrnt)With StoreCrntFileOut.WriteLine .NameFor InxFldrCrnt .Folders.Count To 1 Step -1Set FldrCrnt .Folders(InxFldrCrnt)Call ListAllFolders(FldrCrnt, 1, FileOut)NextEnd WithNextEnd WithFileOut.CloseEnd SubSub ListAllFolders(ByRef Fldr As Folder, ByVal Level As Long, ByRef FileOut As TextStream)' This routine:' 1. Output name of Fldr' 2. Calls itself for each child of Fldr' It is designed to be called by ListStoresAndAllFolders()Dim InxFldrCrnt As LongWith FldrFileOut.WriteLine Space(Level * 2) & .NameFor InxFldrCrnt .Folders.Count To 1 Step -1Call ListAllFolders(.Folders(InxFldrCrnt), Level 1, FileOut)NextEnd WithEnd SubDopo aver eseguito ListStoresAndAllFolders , sul tuo DeskTop sarà presente un nuovo filedenominato "ListStoresAndAllFolders.txt" che conterrà l'elenco promesso di negozi e cartelle.3.5 Spostamento di una cartella da una cartella principale a un'altraPerché voglio fare riferimento a una cartella? Nella parte successiva ti mostrerò come accederealle e-mail all'interno di una cartella di riferimento. Qui ti mostrerò come spostare una cartella. Hocreato una cartella denominata "Test" nella mia Posta in arrivo. In TestMoveFolder() , ho sostituito"A" con il nome del negozio che contiene la mia casella di posta. L'esecuzione di T

Attualmente ci sono tre argomenti che introducono Outlook VBA e almeno altri tre sono previsti. La prima parte descrive come accedere a Visual Basic Editor. Se sei un utente di Outlook 2003 e un utente di Excel VBA, imparerai poco per questa parte poiché l'accesso all'Editor di Visual Basic di Outlook è lo stesso dell'accesso a Excel Visual Basic