Office (VBA e dintorni)

Tutto quel che riguarda VBA di Microsoft Office

Giovani e vecchi manager

Una semplice versione di un "ini manager"... Finalmente ne ho avuto bisogno pure io! Senza ricorrere a classi o artifici strani di manipolazione stringhe, prendo l'idea di Scott Lylerly e la faccio mia con qualche piccolo aggiustamento :) L'utilizzo è davvero semplice: ini_manager ("r|w", "section", "key", <"value">) dove "r" sta per read e "w" sta per write, quindi con una sola chiamata decido quale azione intraprendere (se in lettura o in scrittura). Il codice poi effettua a un certo punto una chiamata ricorsiva a se stesso che ho voluto inserire (naturalmente si può modificare questo punto) per sollevare errore se in modalità scrittura la...

La giusta forma per le stringhe

Diciamo che l'idea è nata abbastanza per caso. Smanettando con altri linguaggi è facile notare che ci sono alcune facilitazioni per la formattazione delle stringhe, mediante l'uso sapiente di placeholders e modificatori si possono realizzare formattazioni pregevoli delle stringhe in output che agevolano sicuramente il debug o la presentazione coerente dei dati. MI vengono in mente le convenzioni di formattazione delle stringhe di python, Java, C#, C++, .Net e chissà quanti altri linguaggi evoluti offrono questa posisbilità... ma non VBA! Allora ho deciso di costruirmi la mia semplice funzioncina personalizzata :) E' talmente semplice che non prevede l'uso di modificatori o quantificatori, per...

Per la precisione!

La funzione Timer() è accurata solo fino a circa 55 millisecondi... ecco qui un'idea del solito grande Francesco Balena per ottenere un benchmark accurato al singolo millisecondo! Option Explicit Private Type SMPTE hour As Byte min As Byte sec As Byte frame As Byte fps As Byte dummy As Byte pad(2) As Byte End Type Private Type MMTIME wType As Long units As Long smpteVal As SMPTE songPtrPos As Long End Type Private...

Stampe d'autore

In Excel alcune volte mi è capitato di dover impostare, anche temporaneamente, una stampante diversa da quella predefinita... Application.ActivePrinter è piuttosto ostico nell'impostazione di questa proprietà perchè bisogna conoscere esattamente sia il nome della stampante desiderata sia la locazione (es. "su Ne01:" per una stampante di rete nelle versioni Excel localizzate in italiano). Ecco quindi un metodo che sfrutta un paio di API per aggirare l'ostacolo. Il codice seguente va incollato in un modulo; per avviarlo si esegue la sub Main. La procedura presenta in una inputbox l'elenco delle stampanti installate nel sistema (non elenca quella già predefinita), numerate da 1 in poi;...

Il suono delle cose

Ogni cosa ha un suono... anche i nomi :) e questo può tornare utile soprattutto nelle ricerche. In questo breve post vi illustro una mia versione di Soundex. Soundex è un algoritmo di fonetica per l’indicizzazione di parole secondo il loro suono o pronuncia. Nato essenzialmente per la pronuncia inglese, può essere trasportato in altre lingue come l’italiano. L’obiettivo è di poter raggruppare parole omofone (dal suono simile) affinché possano essere abbinate per un ricerca veloce, nonostante differenze o errori di ortografia. In un database di prodotti, la ricerca di "MATITA" troverà corrispondenze con "MATITA" e "MATITE", ma anche con "MATTITA"....

Excel. Generatore di password causali

Dopo molto tempo, torno a scrivere qualcosa su questo blog, l'argomento è più che altro il soddisfacimento di una curiosità intellettuale. Stavo cercando di distribuire una piccola applicazione Access ad un numero finito di utenti, e pensavo di tenere sotto controllo gli accessi con la semplice attribuzione di una password predeterminata e non modificabile. Invece di inventarmi password astruse, ho chiesto aiuto ad Excel per generarne alcune in automatico. E già che c'ero (l'appetito vien mangiando) ho pensato di creare una funzione più generica :) Googlando (sono vecchio ma mi devo abituare ai neologismi!) ho trovato un articolo datato ma interessante, da cui...

Parole, parole, parole... il Contastorie

E' un problema ricorrente, quello di contare gli elementi uguali in un insieme. Anche recentemente è passato in Lista una argomento analogo. Così mi sono messo d'impegno e ne è nata una Classe che, con pur impegno didattico, vuole giocare un pochino con le parole di una frase; si tratta di una collection class che, correttamente istanziata, permette di contare il numero di parole presenti nella frase e di stabilire quale sia la parola più lunga o quella più corta. La Classe WordsCollectionClass è degna di ulteriori migliorie, naturalmente, e ciascuno - dopo aver copincollato il codice sorgente che trovate cliccando sul...

VBA. Hora fugit (chi ha tempo non aspetti tempo)

Al giorno d'oggi siamo sempre tutti di corsa, sempre affaccendati, sempre ridotti all'ultimo (come per il regalo di Natale). Prendiamoci quindi un po' di tempo e vediamo come funziona la gestione dei timer in ambiente Office. Il tempo è danaroVBA non mette a disposizione i controlli Timer. Ogni applicativo Office quindi, per gestire lo scorrere dell'inesorabile Ruota, si arrangia come può; ad esempio con un gestore OnTime dei rispettivi oggetti Application (Excel e Word), o con la proprietà AdvanceTime dell'oggetto SlideShowTransition (PowerPoint). Per Access esiste l'evento Timer delle maschere; Outlook invece non mette a disposizione alcun metodo specifico. In Word: Application.OnTime(When, Name,...

Excel. Valutazioni personali

Con questo post vi illustro come realizzare una semplice funzione definita dall'utente senza utilizzare codice VBA e che sfrutta il concetto del metodo Evaluate, per valutare l'espressione passata come argomento.Riprendo e "italianizzo" l'idea di un certo David Hager in un post di qualche anno fa (lo trovate, se vi interessa, a questo indirizzo ). PremessaLa funzione si occuperà di valutare un'espressione, così come inserita nella cella alla propria immediata sinistra, restituendo il valore numerico risultante dalla valutazione dell'espressione.Complicato? un esempio aiuterà a chiarire meglio.Questa funzione ci consentirà di sommare i valori presenti in una cella mostrando il valore risultante dalla...

VBA - Facciamo le pulizie

Antefatto Qualche settimana fa inviai alla Redazione di VB Tips & Tricks una piccola funzione, che ha il nobile e utile scopo di estrarre da una stringa i soli caratteri alfabetici (o solo i numerici). La funzioncina è stata pubblicata nella sezione Tips del sito, con le correzioni e le migliorie suggerite anche da Luciano Bastianello. Il titolo della Tips è (appunto) Estrarre solo le cifre o le lettere contenute in una stringa (2)" e si trova, oltre che nell'elenco delle recenti, anche nella sezione "Stringhe - Numeri - Date". Mi sono deciso ad estendere le funzionalità del codice prodotto; avevo bisogno...

Full Office (VBA e dintorni) Archive