Visualizzare le proprietà di un file di Excel in una cella
giovedì, 26 novembre 2009
Per visualizzare in una cella di Excel alcune proprietà del file quali l'autore o la data e ora dell'ultimo salvataggio seguire la seguente procedura:
Prima di tutto si deve lavorare tramite codice VBA quindi apriamo la relativa finestra.
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
application.volatile
On Error GoTo err_value
DocProps = ActiveWorkbook.BuiltinDocumentProperties _
(prop)
Exit Function
err_value:
DocProps = CVErr(xlErrValue)
End Function
Quindi per non dover salvare il file come "Cartella di lavoro con attivazione macro" è possibile creare un componente aggiuntivo contenete il codice che verrà avviato automaticamente all'avvio di Excel, come spiegato qui.
Inserire infine nella cella desiderata la formula che permette di estrarre le proprietà del file secondo questo schema:
Per visualizzare l'Autore:
=DocProps ("last author")
Per visualizzare la data e l'ora dell'ultimo salvataggio:
=DocProps ("last save time") e formattare la cella come data in modo che visualizzi la data e l'ora
technorati tags: Microsoft, Excel, Proprietà, Autore, Ultimo salvataggioposted by Andrea Perotti @ 14.54 Permalink , ,
Come inviare in automatico, ad un indirizzo in Ccn, ogni mail spedita da Outlook
mercoledì, 18 novembre 2009
Seguendo questa procedura potrai impostare Outlook affinchè ogni mail inviata sia automaticamente e invisibilmente inoltrata ad un indirizzo in copia per conoscenza nascosta (Ccn)
In Outlook aprire la finestra di Visual Basic tramite il comando Strumenti - Macro - Visual Basic Editor; quindi a sinistra espandere la voce Progetto1 fino a visualizzare ThisOutlookSession; a questo punto incollare nella finestra a destra il codice riportato sotto sostituendo al posto di indirizzo@mioindirizzo.com l'indirizzo mail al quale si vuole che vengano inviate in Ccn tutte le mail spedite da Outlook.
Chiudere la finestra di Visual Basic Editor e riavviare Outlook.
Cancel As Boolean)
Dim objRecip As Recipient
Dim strMsg As String
Dim res As Integer
Dim strBcc As String
On Error Resume Next
' #### USER OPTIONS ####
' address for Bcc -- must be SMTP address or resolvable
' to a name in the address book
strBcc = "indirizzo@mioindirizzo.com"
Set objRecip = Item.Recipients.Add(strBcc)
objRecip.Type = olBCC
If Not objRecip.Resolve Then
strMsg = "Could not resolve the Bcc recipient. " & _
"Do you want still to send the message?"
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
"Could Not Resolve Bcc Recipient")
If res = vbNo Then
Cancel = True
End If
End If
Set objRecip = Nothing
End Sub
posted by Andrea Perotti @ 07.58 Permalink , ,
Sommare solo celle visibili in Excel
martedì, 9 giugno 2009
Se in un foglio di Excel sono presenti righe e colonne nascoste e vogliamo sommare un intervallo che contenga anche le celle nascoste il risultato della somma comprenderà non solo le celle visibili ma anche quelle nascoste.
Vediamo quindi come fare se vogliamo sommare solamente le celle visibili di un intervallo tralasciando quelle nascoste; dovremo introdurre una funzione tramite codice VBA, quindi apriamo la relativa finestra.
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare nel modulo il codice riportato sotto:
Function Sum_Visible_Cells(Cells_To_Sum As Object)
Application.Volatile
For Each cell In Cells_To_Sum
If cell.Rows.Hidden = False Then
If cell.Columns.Hidden = False Then
total = total + cell.Value
End If
End If
Next
Sum_Visible_Cells = total
End Function
Posizionarsi quindi nella cella in cui si vuole venga calcolata la somma e digitare la seguente funzione:
=Sum_Visible_Cells(A1:A10)
Dove A1:A10 è l'intervallo delle celle da sommare; se nell'intervallo sono presenti righe nascoste, queste non verranno prese in considerazione nel calcolo.
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
technorati tags: Microsoft, Excel, Somma, Sommare celle visibili, Righe nascoste, Colonne nascoste
posted by Andrea Perotti @ 15.41 Permalink , ,
Estrarre commenti da celle Excel
giovedì, 21 maggio 2009
Vediamo come estrarre un commento presente in una cella Excel e visualizzarlo come testo all'interno di un'altra cella. Dovendo lavorare tramite codice VBA apriamo la relativa finestra.
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare nel modulo il codice riportato sotto:
Function GetCommentText(rCommentCell As Range)
Dim strGotIt As String
On Error Resume Next
strGotIt = WorksheetFunction.Clean _
(rCommentCell.Comment.Text)
GetCommentText = strGotIt
On Error GoTo 0
End Function
Posizionarsi quindi nella cella in cui si vuole venga inserito il commento presente in un'altra cella e digitare la seguente funzione:
=GetCommentText(A1)
Dove A1 è la cella contenete il commento
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
posted by Andrea Perotti @ 11.15 Permalink , ,
Selezionare celle che contengono collegamenti ad altri file di Excel
martedì, 24 febbraio 2009
Se in un foglio di lavoro di Excel vi sono celle che contengono collegamenti a celle presenti in un altro foglio di Excel tramite il comando Menù - Modifica - Collegamenti (in Excel XP/2003) o Bottone Office - Prepara - Modifica collegamenti a file (in Excel 2007) è possibile visualizzare quali sono i file relativi a questi collegamenti.
Però nel caso in cui sia necessario evidenziare solo le celle che in uno specifico foglio di Excel contengono collegamenti a celle presenti in un altro file di Excel potremmo ricorre ad una macro che possiamo inserire come spiegato di seguito
Aprire la finestra di VBA:
In Excel XP o 2003: Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007: Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
Quindi ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Public Sub CollView()
Const cWshName = "Foglio1"
Dim wb As Excel.Workbook
Dim wsh As Excel.Worksheet
Dim rng As Excel.Range
Dim vntItem As Variant
Dim strFormula As String
Dim strFilename As String
Dim rngOut As Excel.Range
Set wb = Application.ThisWorkbook
Set wsh = wb.Worksheets.Item(cWshName)
For Each vntItem In wb.LinkSources
Debug.Print vntItem
strFilename = GetFileName(vntItem)
If InStr(strFilename, Chr$(32)) Then
strFilename = "[" & strFilename & "]"
End If
For Each rng In wsh.Cells.SpecialCells(xlCellTypeFormulas)
strFormula = rng.Formula
Debug.Print strFormula
If InStr(strFormula, strFilename) Then
If rngOut Is Nothing Then
Set rngOut = rng
Else
Set rngOut = Application.Union(rngOut, rng)
End If
End If
Next
Next
If Not rngOut Is Nothing Then
rngOut.Select
End If
Set rngOut = Nothing
Set rng = Nothing
Set wsh = Nothing
Set wb = Nothing
End Sub
Private Function GetFileName(ByVal FullName) As String
Dim strSep As String
strSep = Application.PathSeparator
GetFileName = Mid$(FullName, InStrRev(FullName, strSep) + 1)
End Function
A questo punto basterà lanciare la macro CollView perchè risultino selezionate tutte le celle del Foglio1 che presentano collegamenti a celle di altri fogli di Excel. Nel caso in cui si debba lavorare in un altro foglio basterà cambiare il codice precedente mettendo al posto di Foglio1 nella seconda riga il nome del foglio di Excel in cui evidenziare le celle contenenti collegamenti esterni.
technorati tags: Microsoft, Excel, Celle, Collegamenti
posted by Andrea Perotti @ 16.37 Permalink , ,
Ordinare le celle di Excel in base al colore
lunedì, 15 dicembre 2008
Immaginiamo di voler ordinare un elenco in Excel in base al colore dello sfondo o al colore del testo delle celle; in Excel 2007 questa funzionalità è disponibile di default tramite il pulsante Ordina e Filtra nel gruppo Modifica della scheda Home, selezionando il filtro automatico o l'ordinamento personalizzato.
In Excel 2003 e precedenti l'ordinamento secondo le celle colorate non è presente, si dovrà quindi aggiungere una funzione personalizzata che permetta questa operazione.
Il concetto che seguiremo per ottenere il risultato voluto è quello di inserire in una colonna a fianco delle celle colorate una formula che restituisca il numero corrispondente ad ogni colore, ossia l'indice del colore; si ordinerà quindi la tabella in base alla colonna contenente i numeri corrispondenti ai colori, ottenendo quindi un ordinamento basato sul colore delle celle.
Passiamo quindi alla creazione della funzione che restituisce il numero del colore presente nella cella:
Menù Strumenti - Macro - Visual Basic Editor
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare il codice riportato sotto relativo alla funzione desiderata:
Function ColorIndexOfCell(Rng As Range, _
Optional OfText As Boolean, _
Optional DefaultAsIndex As Boolean = True) As Integer
Dim C As Long
If OfText = True Then
C = Rng.Font.ColorIndex
Else
C = Rng.Interior.ColorIndex
End If
If (C < 0) And (DefaultAsIndex = True) Then
If OfText = True Then
C = GetBlack(Rng.Worksheet.Parent)
Else
C = GetWhite(Rng.Worksheet.Parent)
End If
End If
ColorIndexOfCell = C
End Function
Function GetWhite(WB As Workbook) As Long
Dim Ndx As Long
For Ndx = 1 To 56
If WB.Colors(Ndx) = &HFFFFFF Then
GetWhite = Ndx
Exit Function
End If
Next Ndx
GetWhite = 0
End Function
Function GetBlack(WB As Workbook) As Long
Dim Ndx As Long
For Ndx = 1 To 56
If WB.Colors(Ndx) = 0& Then
GetBlack = Ndx
Exit Function
End If
Next Ndx
GetBlack = 0
End Function
Quindi in una nuova colonna inserire la seguente formula:
Nel caso si cosideri il colore dello sfondo della cella
=ColorIndexOfCell(A1;FALSO;VERO)
Nel caso si cosideri il colore del carattere della cella
=ColorIndexOfCell(A1;VERO;VERO)
La cella A1 rappresenta la cella colorata che si desidera ordinare .
A questo punto in questa nuova colonna saranno visualizzati i numeri corrispondenti ai colori presenti nelle celle di riferimento; basterà ordinare la tabella in base a questa colonna per aver ottenuto un ordinamento basato sui colori delle celle!
Se è necessario creare un ordinamento specifico, ossia che non segua la lista numerica crescente o decrescente, si dovrà impostare un elenco numerico personalizzato che segua l'ordine dei colori desiderati.
Per creare un elenco personalizzato:
Menù strumenti -> Opzioni -> Scheda Elenchi
Per definire un ordinamento in base all'elenco personalizzato:
Menù Dati -> Ordina -> Opzioni -> Prima chiave di ordinamento
Per rendere disponibile questa funzione in tutte le cartelle di Excel e non solo in quella in cui l'abbiamo inserita è possibile creare e attivare un componente aggiuntivo secondo queste istruzioni.
technorati tags: Microsoft, Excel, Ordinamento, Celle, Colorate
posted by Andrea Perotti @ 22.10 Permalink , ,
Estrarre una stringa di testo da una cella Excel
martedì, 22 luglio 2008
Vediamo come estrarre velocemente una parte di testo da una cella di Excel senza dover ricorrere alla funzione STRIGA.ESTRAI
Ad esempio immaginiamo di avere in una cella Excel questo testo:
Andrea Perotti - In The Name Of Blog - www.andreaperotti.ch - Lugano
Abbiamo bisogno di estrarre il testo www.andreaperotti.ch dalla cella.
Chiaramente il testo contenuto nella cella deve essere delimitato ad esempio:
Nome, Cognome, Indirizzo (in questo caso i "pezzi" sono delimitati dalla virgola)
Procediamo quindi in questo modo:
Aprire la finestra di VBA:
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Function GetStringPart(strInput As String, strDelimiter As String, _Chiudere quindi la finestra di Visual Basic e tornare in Excel.
intPart As Integer) As String
Dim varStrings As Variant
varStrings = Split(strInput, strDelimiter, -1, vbBinaryCompare)
On Error Resume Next
GetStringPart = Trim(varStrings(intPart - 1))
On Error GoTo 0
End Function
A questo punto immaginiamo che nella cella A5 sia presente questo testo:
Andrea Perotti - In The Name Of Blog - www.andreaperotti.ch - Lugano
Nella cella H5 abbiamo bisogno di visualizzare solo il testo www.andreaperotti.ch
La formula che dovremo inserire nella cella H5 è la seguente:
=GetStringPart(strInput;strDelimiter;intPart)
Dove:
strInput: è la cella che contiene il testo completo
strDelimiter: è ciò che delimita una parte di testo dall'altra (tra virgolette " ")
intPart: è la posizione del testo che vogliamo estrarre
Nel nostro caso quindi la funzione risulterebbe:
=GetStringPart(A5;"-";3)
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
technorati tags: Microsoft, Excel, Estrarre, Testo, Celle, Stringa, GetStringPart, Funzioni
posted by Andrea Perotti @ 09.38 Permalink , ,
Windows Vista e Office 2007
domenica, 15 giugno 2008
Prendo spunto da questo post di Gaspar per aggiungere alcune semplici osservazioni personali sull'accoppiata Windows Vista e Office 2007, maturate da quello che mi dicono i clienti e che vedo sul campo, almeno qui in Ticino.
Windows Vista: le ditte non lo vogliono; il primo requisito richiesto quando si tratta la fornitura di PC è: si può avere con XP? La ragione principale è la mancanza di compatibilità con i gestionali esistenti, quindi o le macchine arrivano già con XP installato oppure si passa al downgrade...
Ora che sia una paura diffusa, che Vista sia un effettivo problema per le aziende resta il fatto che in questo caso Microsoft ha sicuramente sbagliato qualcosa questa volta. Si è trovata con un prodotto problematico e non ha saputo reagire, se non con patetici comunicati e patch ma nulla che potesse veramente andare nella direzione di chi non utilizza il PC per giocare ma per lavorarci ed ha bisogno che tutto funzioni come sempre... anche le vecchie applicazioni.
In pratica non abbiamo mai fatto così tanti downgrade al sistema operativo precedente come in questo periodo...
Office 2007: qui si tratta di un puro discorso di praticità e di utilizzo; per chi lavora nell'IT la nuova interfaccia Office non è un problema, anzi risulta pure migliore, ma bisogna tener presente che la maggior parte degli utenti non passano il loro tempo a spulciare gli applicativi alla ricerca di novità e i segreti, l'utente utilizza il PC come supporto al proprio lavoro e ha bisogno che questo lo aiuti a fare le cose il più semplicemente possibile; per questo nel corso degli anni si è abituato a svolgere una serie di operazioni, esattamente quelle che servono a lui, in modo naturale. I comandi erano sempre nello stesso punto e questo a lui bastava; ma d'altronde questo è lo scopo per cui utilizza il PC e non lavora a mano!
Ed è giusto che sia così, d'altronde l'essere umano è abitudinario di natura e ogni tipo di cambiamento viene visto sempre con una certa apprensione, questo in tutti i campi.
Il risultato è che ci si trova di fronte ad un nuovo modo di lavorare e quindi ci si deve abituare! Risultato: c'è bisogno di formazione in modo tale da non trovarsi a dover non sapere più dove sono finiti i comandi utilizzati normalmente.
Anche in questo caso l'esperienza sul campo mi dice che quando viene pianificato il passaggio a Office 2007 si pianifica anche la formazione, per evitare di lasciare gli utenti in balia di stessi a districarsi su un programma che non ha più nulla di familiare. Chi invece pensa che la cosa sarà indolore... dopo pochi giorni di utilizzo chiama in preda alla disperazione...
Anche in questo caso Microsoft si è limitata a rassicurare gli utenti con una discutibile ricerca dello studio Forrester (e chissà perchè quando sento questo nome mi viene in mente il Mago Forest - un nesso in questo ci sarà...) in cui si affermava con certezza che il passaggio sarebbe stato assolutamente indolore e che non sarebbero state necessarie formazioni particolari se non pochissime ore per altro nella maggior parte dei casi svolte direttamente dagli utenti tramite gli strumenti on-line a disposizione sul sito Microsoft!
Meditate gente... meditate...
Etichette: Microsoft
posted by Andrea Perotti @ 11.02 Permalink , ,
Aggiungere un motivo di riempimento alle barre di un grafico in Excel 2007
martedì, 18 dicembre 2007
In Excel 2003 o precedenti era possibile formattare le barre di un grafico con un motivo di riempimento; cliccando con il pulsante destro sulla barra relativa alla serie da formattare e scegliendo la voce Formato serie dati... si apriva la relativa finestra che nella scheda Motivo presentava il pulsante Riempimento... tramite il quale si accedeva alla finestra Effetti di riempimento.
In questa finestra trovava infine posto la scheda Motivo che permetteva di impostare il motivo di riempimento desiderato da applicare alle barre del grafico.
Se passiamo ora ad Excel 2007 e proviamo a fare la stessa cosa scopriamo che nella finestra che gestisce la formattazione delle barre non è più possibile impostare un motivo di riempimento per le stesse.
Per ottenere lo stesso risultato del passato si può agire in questo modo:
in una cella qualsiasi di Excel 2007 impostare il riempimento desiderato, cliccando con il pulsante destro sulla cella stessa, scegliendo dal menù contestuale la voce Formato celle..., passando, nella finestra che comparirà, alla scheda Riempimento e quindi scegliendo un eventuale sfondo della cella ed un colore e stile per il riempimento.
Quindi chiudere la finestra e copiare, tramite un semplice copia e incolla, la cella che contiene la formattazione appena creata.
Passare al grafico, cliccare con il pulsante destro sulla barra della serie alla quale si vuole applicare il riempimento, scegliere il comando Formato serie dati... e passare alla sezione Riempimento.
Scegliere quindi l'opzione Riempimento a immagine o trama e alla voce Inserisci da: cliccare sul pulsante Appunti
A questo punto configurare il riempimento scegliendo l'opzione In pila e proporzionata con 1 unità di immagine.
Avremo così ottenuto il riempimento delle barre del grafico tramite un motivo.
technorati tags: Micorsoft, Excel, 2007, Riempimento, Motivo, Grafico, Barre
posted by Andrea Perotti @ 10.42 Permalink , ,
Microsoft Windows Vista entra nella TOP TEN...
martedì, 4 dicembre 2007
... si la TOP TEN dei dieci prodotti peggiori di quest'anno!!!
E come non essere d'accordo considerando i continui problemi di compatibilità che riscontro su macchine su cui è stato installato o la lentezza sulle nuove macchine o sentendo i responsabili dell'IT che cercano di far slittare il più possibile la migrazione da XP a Vista!!!
Tags:
posted by Andrea Perotti @ 13.10 Permalink , ,
Come leggere la posta di Hotmail tramite Outlook
Avete un account Hotmail e siete stufi di dover ricorrere ogni volta al Web per leggere la posta? Vorreste gestire tutto da Outlook?
Allora Microsoft Office Outlook Connector fa al caso vostro!
Scaricando questo plug-in avrete la possibilità di utilizzare Outlook 2003 o 2007 per accedere al vostro account Microsoft Windows Live Hotmail o Microsoft Office Live Mail e quindi avere a disposizione contatti o messaggi di posta.
Se volete sapere nel dettaglio quali sono le funzionalità supportate da Outlook Connector, qui trovate l'elenco completo.
Se invece vi servono istruzioni per l'installazione qui trovate la guida passo passo.
Se infine volete leggere la vostra posta Hotmail tramite Outlook Express qui trovate le spiegazioni per la configurazione.
Tags:
Etichette: Microsoft, Outlook, Posta
posted by Andrea Perotti @ 11.31 Permalink , ,
Visualizzare le funzioni contenute nelle celle di Excel
venerdì, 30 novembre 2007
Vediamo come sia possibile visualizzare una funzione presente in una cella di Excel.
La prima possibilità è di ricorrere al menù Strumenti -> Opzioni -> Scheda Visualizza -> Comando Formula (in Excel 2003) oppure Pulsante Office -> Opzioni di Excel -> Impostazioni Avanzate -> Opzioni di visualizzazione per il foglio di lavoro -> Visualizza formule nelle celle anziché i risultati calcolati (in Excel 2007). In questo modo verranno visualizzate tutte le formule del foglio, che sostituiranno quindi il relativo risultato e viceversa.
Se invece vogliamo visualizzare solo le formule inserite in alcune celle a nostra scelta, si dovrà creare una nuova funzione come descritto di seguito:
Aprire la finestra di VBA:
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Function FormText(CellRef As Range, Optional RefIndicator As Integer) As String
' RefIndicator: 0 do not show, 1 show reference, 2 show absolute reference
Dim n As Integer, f As Integer
If IsNull(RefIndicator) = True Then
RefIndicator = 0
End If
FormText = CellRef.Formula
If RefIndicator > 0 Then
FormText = "[" & CellRef.Address & "] " & FormText
End If
n = 1
f = InStr(1, FormText, "]")
Do While n <>
If RefIndicator = 1 And Mid(FormText, n, 1) = "$" Then
FormText = Trim(Left(FormText, n - 1) & Mid(FormText, n + 1, 200))
End If
If Mid(FormText, n, 1) = "," Then
FormText = Trim(Left(FormText, n) & " " & Mid(FormText, n + 1, 200))
End If
n = n + 1
Loop
End Function
Chiudere quindi la finestra di Visual Basic e tornare in Excel.
A questo punto ci posizioniamo nella cella in cui vogliamo visualizzare il risultato della funzione ossia la formula contenuta in un'altra cella:
=FormText(Riferimento)
Dove Riferimento è la cella di cui vogliamo visualizzare la formula
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
Tags:
posted by Andrea Perotti @ 15.02 Permalink , ,
Come estrarre l'URL completo da un elenco di collegamenti ipertestuali presenti nelle celle di Excel
martedì, 13 novembre 2007
Vediamo come estrarre, tramite una funzione, l'URL completo presente nel testo di un collegamento ipertestuale in una cella di Excel.
Dovendo lavorare tramite codice VBA apriamo la relativa finestra.
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare il codice riportato sotto:
Public Function Estrai_Indirizzi(ByVal Collegamento As Excel.Range)
Estrai_Indirizzi = Replace _
(Collegamento.Hyperlinks(1).Address, "mailto:", "")
End Function
Chiudere la finestra e ritornare in Excel.
La funzione che deve essere inserita per estrarre l'URL completo del collegamento ipertestuale è la seguente:
=Estrai_Indirizzi(Riferimento)
In cui:
Riferimento: La cella che contiene il collegamento ipertestuale del quale si vuole estrarre l'URL completo.
Esempio: =Estrai_Indirizzi(A10)
Tags:
posted by Andrea Perotti @ 15.00 Permalink , ,
Microsoft Partner Roadshow 07
giovedì, 25 ottobre 2007
Oggi sono stato al Microsoft Partner Roadshow 07, evento all'interno di Ticino Informatica, a Lugano.
Ai cinque o sei partecipanti seduti in sala è stato illustrato quanto sia bello, performante, veloce e stabile Windows Vista accoppiato a Office 2007; ne sono anche stati lodati alcuni pregi.
Chissà come mai mi è venuto in mente questo:
Poi però quando siamo usciti ci hanno fatto un regalo.
Tags:
Etichette: Informatica, Microsoft, Windows
posted by Andrea Perotti @ 20.38 Permalink , ,
Disponibile la patch per il bug di Excel 2007
mercoledì, 10 ottobre 2007
Microsoft ha rilasciato la patch che risolve il bug di Excel 2007, scoperto qualche settimana fa, relativo ai calcoli che danno come risultato i valori 65'535 e 65'536.
Qui il download per Excel 2007
Qui il download per Excel Services 2007 64-bit
Qui il download per Excel Services 2007 32-bit
Tags:
posted by Andrea Perotti @ 08.38 Permalink , ,
Lo studio Forrester e i vantaggi dell'interfaccia di Office 2007
lunedì, 1 ottobre 2007
Microsoft ha pubblicato due ricerche, commissionate a Forrester e svolte tramite sondaggi on-line, sulle impressioni e vantaggi nell'utilizzo della nuova interfaccia di Office 2007: la prima relativa alle impressioni di 1004 utenti, la seconda basata sull'opinione di 749 responsabili IT delle ditte coinvolte nel sondaggio.
La ricerca, che mi pare in realtà piuttosto banale nelle modalità di svolgimento e nella stesura, arriva chiaramente a conclusioni più che positive: l'iniziale "trauma" iniziale viene superato nel giro di alcune settimane di utilizzo, dopo le quali non solo l'interfaccia risulta più semplice della precedente ma porta anche ad un aumento della produttività.
Inoltre viene messo in evidenza come la maggior parte degli intervistati ammetta di non aver avuto bisogno di formazione oppure di averne bisogno ma per non più di 8 ore per prendere dimestichezza con la nuova interfaccia; e guarda caso la formazione preferita è quella on-line di Microsoft.
Insomma il messaggio è: state tranquilli che passando a Office 2007 si aumenta la produttività, non si deve perdere tempo per la formazione, al limite si utilizzano gli strumenti on-line di Microsoft e alla fine il passaggio è totalmente indolore e veloce.
Ora, tralasciando, come ho detto all'inizio, che le 18 paginette delle due inchieste mi paiono un banale compitino rivolto più a tranquillizzare chi deve migrare al nuovo Office 2007 che non qualcosa di veramente professionale, allo stesso livello dei 10 miti da sfatare presenti già da tempo sul sito Microsoft, le conclusioni a cui arriva Forrester nella sua indagine sono leggermente in contro tendenza rispetto alle situazioni che mi si presentano giornalmente, nella realtà.
Prima di tutto sono veramente pochi gli utenti che utilizzano di propria volontà gli strumenti on-line di Microsoft per la formazione, sia perchè non ne conoscono l'esistenza, sia perchè non hanno il tempo materiale in ambiente lavorativo; altro fattore è che nonostante ciò che viene esibito nel sondaggio, gli utenti delle aziende con cui ho contatti e che sono passati ad Office 2007 hanno avuto notevoli difficoltà di adattamento, non certo limitati alle prime settimane di utilizzo, difficoltà che non hanno risolto con gli strumenti di formazione on-line Microsoft, e tanto meno da soli, e che portano a richiedere aiuto per organizzare sessioni di formazione in aula o sul posto, per risolvere i problemi evidenziati nell'uso quotidiano.
Insomma forse Microsoft sta giustamente (dal suo punto di vista) cercando di tranquillizzare gli utenti e i responsabili che dovranno passare alla nuova interfaccia della suite Office, però potrebbe almeno farlo in modo più convincente!
Tags:
Etichette: Microsoft
posted by Andrea Perotti @ 19.40 Permalink , ,
Creare e gestire visualizzazioni personalizzate in Outlook 2007
giovedì, 27 settembre 2007
Outlook 2007 permette di visualizzare i differenti elementi (posta, contatti, calendario ecc.) tramite visualizzazioni predefinite o personalizzate.
Vediamo come creare visualizzazioni in base alle nostre esigenze, modificando quelle esistenti o impostandone di nuove.
Creare e personalizzare una nuova visualizzazione sulla base di una esistente
Visualizzare la cartella nella quale si desidera impostare la visualizzazione quindi:
Menù Visualizza -> Visualizzazione corrente -> Definisci visualizzazioni
Si aprirà la finestra di dialogo Libreria visualizzazioni personalizzate
Scegliere dall'elenco predefinito la visualizzazione di partenza che si vuole modificare quindi cliccare su Copia
Si aprirà la finestra di dialogo Copia visualizzazione
Inserire il nome della nuova visualizzazione personalizzata e scegliere l'opzione Utilizzabile in tra queste:
Cartella corrente, pubblica: per rendere disponibile la visualizzazione a chiunque possa accedere alla cartella
Cartella corrente, privata: per rendere disponibile la visualizzazione solo alla persona che l'ha creata
Tutte le cartelle (nome della cartella): per rendere disponibile la visualizzazione in tutte le cartelle di quell'elemento; se ad esempio si crea una cartella personalizzata nei Contatti tutte le cartelle contatti avranno disponibile questa visualizzazione.
Confermando le scelte cliccando su Ok si aprirà la cartella di dialogo Personalizza visualizzazione tramite la quale sarà possibile impostare le differenti opzioni di visualizzazione.
La nuova visualizzazione creata sarà così disponibile nel menù delle Visualizzazioni.
Creare una nuova visualizzazione personalizzata
Visualizzare la cartella nella quale si desidera creare la nuova visualizzazione quindi:
Menù Visualizza -> Visualizzazione corrente -> Definisci visualizzazioni
Si aprirà la finestra di dialogo Libreria visualizzazioni personalizzate
Selezionare il pulsante Nuova per creare una nuova visualizzazione personalizzata
Nella finestra di dialogo Crea nuova visualizzazione inserire il nome della nuova visualizzazione e scegliere il tipo basato sulle seguenti possibilità:
Tabella: crea una visualizzazione in formato tabulare, con le colonne che rappresentano i campi scelti e i dati nelle righe
Cronologia: crea una visualizzazione in formato cronologico, ad esempio in funzione della data di creazione dell'elemento
Scheda: crea una visualizzazione raggruppando i campi scelti in schede
Giorno/settimana/mese: crea una visualizzazione impostando a sinistra i calendari mensili e a destra i giorni selezionati in cui visualizzare i dati in base ai campi impostati (esempio: mail ricevuti nei giorni)
Icona: crea una visualizzazione elencando gli elementi sotto forma di icone
Scegliere l'opzione Utilizzabile in tra queste:
Cartella corrente, pubblica: per rendere disponibile la visualizzazione a chiunque possa accedere alla cartella
Cartella corrente, privata: per rendere disponibile la visualizzazione solo alla persona che l'ha creata
Tutte le cartelle (nome della cartella): per rendere disponibile la visualizzazione in tutte le cartelle di quell'elemento; se ad esempio si crea una cartella personalizzata nei Contatti tutte le cartelle contatti avranno disponibile questa visualizzazione.
Confermando le scelte cliccando su Ok si aprirà la cartella di dialogo Personalizza visualizzazione tramite la quale sarà possibile impostare le differenti opzioni di visualizzazione.
La nuova visualizzazione creata sarà così disponibile nel menù delle Visualizzazioni.
Gestire le visualizzazioni personalizzate
E' possibile modificare, rinominare o eliminare le visualizzazioni personalizzate create seguendo questa procedura:
Visualizzare la cartella nella quale si desidera creare la nuova visualizzazione quindi:
Menù Visualizza -> Visualizzazione corrente -> Definisci visualizzazioni
Si aprirà la finestra di dialogo Libreria visualizzazioni personalizzate
Selezionare la visualizzazione dall'elenco e scegliere l'azione desiderata cliccando sul pulsante Modifica, Rinomina oppure Elimina.
Permettere la visualizzazione alle sole visualizzazioni personalizzate
E' possibile limitare il numero di visualizzazioni disponibili nel Menù visualizza e, ad esempio, permettere di utilizzare solo quelle create da noi.
Prima di tutto le visualizzazioni personalizzate dovranno essere create con l'opzione Utilizzabile in impostata su Cartella Corrente
Visualizzare la cartella nella quale si desidera limitare le visualizzazioni:
Menù Visualizza -> Visualizzazione corrente -> Definisci visualizzazioni
Si aprirà la finestra di dialogo Libreria visualizzazioni personalizzate
Selezionare la casella Mostra solo visualizzazioni create esclusivamente per questa cartella
Chiudere cliccando su chiudi.
Ora nel menù Menù Visualizza -> Visualizzazione corrente saranno presenti solo le visualizzazioni personalizzate e non quelle standard
Tags:
posted by Andrea Perotti @ 16.54 Permalink , ,
Windows Live Translator
mercoledì, 26 settembre 2007
Mentre leggevo il blog MSDN su Project 2007 vedo che l'ultimo articolo annuncia l'uscita di Windows Live Translator, servizio Microsoft di traduzioni on-line in varie lingue (versione Beta).
Così per curiosità provo a tradurre l'articolo stesso (dall'inglese all'italiano)
Ecco il risultato:
Versione originale in inglese
Read our content in other languages.
I've added a link to the new Windows Live Translator service that was rolled out this week. The link is in the News section in the left column. Clicking that link will bring up our site in the Live Translator site. You can then pick which language you would like to see the posts. I can't attest to the quality of machine performed language translations, but hopefully WLT does it well enough for this linkage to be usable to you.
Versione tradotta in italiano
Legga il nostro soddisfare in altre lingue.
Ho aggiunto un collegamento al nuovo servizio del traduttore di Windows Live che è stato srotolato questa settimana. Il collegamento è nella sezione di notizie nella colonna di sinistra. Scattare quel collegamento porterà in su il nostro luogo nel luogo in tensione del traduttore. Potete allora selezionare che la lingua voi vorrebbe vedere gli alberini. Non posso attestare alla qualità delle traduzioni di lingua realizzate macchina, ma eventualmente WLT scaturisce abbastanza affinchè questo collegamento sia utilizzabile a voi.
Versione tradotta in italiano, con l'opzione "Contenuto informatico" attiva
Leggere il contenuto in altri linguaggi.
È stato aggiunto un collegamento al nuovo servizio Windows Live convertitore che è stato roll-out questa settimana. Il collegamento è nella sezione news nella colonna a sinistra. Per visualizzare backup nostro sito nel sito di Live convertitore fare clic tale collegamento. È quindi possibile selezionare quale linguaggio si desidera visualizzare gli inserimenti. Speriamo WLT non hanno per la qualità di traduzioni della lingua del computer eseguita, ma anche abbastanza per questo collegamento essere utilizzabile per l'utente.
Tags:
Etichette: Microsoft
posted by Andrea Perotti @ 15.57 Permalink , ,
Excel 2007 sbaglia i calcoli? Si!
Sì... sembrerebbe proprio che Excel 2007 non sia così bravo nel fare i calcoli!!!
Infatti se provate a digitare in una cella =850*77.1 il risultato non sarà, come ci si aspetta, 65535 ma bensì 100000.
Provate anche con altri calcoli che dovrebbero dare come risultato 65535 (ad esempio =425*154.2)
Conclusione: finché Microsoft non porrà rimedio a questo bug state attenti a fare calcoli con Excel 2007, oppure usate le versioni precedenti, oppure passate a OpenOffice!
Tags:
posted by Andrea Perotti @ 09.56 Permalink , ,
Come cancellare moduli contatti personalizzati in Outlook 2007
lunedì, 24 settembre 2007
Dopo aver visto come creare un modulo personalizzato per l'inserimento dei contatti in Outlook 2007, vediamo ora come cancellarlo.
Prima di tutto è necessario visualizzare la finestra Gestione moduli; nella finestra principale di Outlook scegliere il menù:
Strumenti -> Opzioni -> Scheda Altro -> Pulsante Opzioni avanzate... -> Pulsante Personalizza moduli -> Pulsante Gestione moduli...
A questo punto tramite il pulsante Imposta... si dovrà cercare la cartella in cui sono stati salvati i moduli personalizzati (ad esempio Contatti) e quando il nome del modulo da cancellare comparirà nell'elenco basterà selezionarlo e cliccare sul pulsante Elimina.
posted by Andrea Perotti @ 09.50 Permalink , ,
Come creare, modificare e utilizzare nuovi moduli per i contatti in Outlook 2007
domenica, 23 settembre 2007
In Outlook, quando creiamo un nuovo elemento (messaggio di posta elettronica, contatto, appuntamento, riunione, nota, lista di distribuzione) ci appare una finestra contenente un modulo per l'inserimento dei dati (A: - Cc: - Oggetto - Testo per i mail; Nome - Indirizzo - Telefono nel contatti e così via)
Però a volte potrebbe essere necessario inserire informazioni aggiuntive, rispetto a quelle che ci vengono presentate di default; solitamente questo si verifica nella maschera dei contatti e anche se in realtà Outlook mette a disposizione una notevole serie di campi c'è in ogni caso la possibilità di crearne di nuovi, personalizzati secondo le nostre esigenze.
In aggiunta a questa prima operazione è anche possibile modificare la maschera standard dei contatti di Outlook personalizzandola in modo tale da avere a portata di mano, durante la fase di inserimento, tutte le informazioni necessarie.
Vediamo quindi come agire:
Gestione dei campi associati alla maschera standard dei contatti
- Creare un nuovo contatto
- Nella finestra del nuovo contatto selezionare nel set Mostra il comando Altri campi
- Verrà visualizzata la finestra dei campi; tramite il menù a discesa Seleziona da scegliere il set di campi da visualizzare (tutti quelli disponibili sono alla voce Tutti i campi contatto)
- Per inserire informazioni selezionare il campo desiderato e nella colonna Valore inserire il dato
- Per creare un nuovo campo cliccare sul pulsante Nuovo e nella finestra che apparirà inserire il nome del campo e scegliere Tipo e Formato dei dati. Tutti i campi creati verranno elencati alla voce Tutti i campi creati dall'utente nella cartella
Creazione di un modulo personalizzato per i contatti
Nella finestra principale di Oultook scegliere il menù Strumenti -> Moduli -> Progetta Modulo...

Selezionare Contatto da Libreria moduli standard

Si aprirà quindi la finestra Progettazione modulo contatto nella quale sarà possibile effettuare le modifiche desiderate, inserendo i campi necessari, predefiniti o personalizzati, semplicemente trascinandoli nel modulo dalla finestra Selezione Campi (se non visualizzata cliccare sul pulsante Selezione Campi)

Terminata la personalizzazione del modulo si dovrà pubblicarlo per rendere possibile l'utilizzo; selezionare quindi dal set Modulo il comando Pubblica -> Pubblica Modulo

Si aprirà la finestra di pubblicazione; in Cerca in selezionare la cartella dei contatti e assegnare un nome al modulo, quindi cliccare su Pubblica

A questo punto si è creato un nuovo modulo standard; il modulo predefinito è rimasto sempre quello di default ossia IPM.Contact infatti se creiamo un nuovo contatto non apparirà il nostro modulo ma quello di default.
Per aprire il nuovo modulo si dovrà ricorrere al menù File -> Nuovo -> Scegli modulo

Quindi nella finestra che apparirà selezionare in Cerca in la voce Contatti e quindi cliccare sul nome del modulo personalizzato.
Impostare come predefinito un modulo personalizzato
Esiste però la possibilità di impostare come predefinito il nostro modulo personalizzato in modo tale che si apra quando creiamo un nuovo contatto, al posto di quello standard. Dovremo dire ad Outlook che il nuovo modulo contatti è il nostro seguendo questa procedura:
Visualizzare l'elenco delle cartelle di Outlook

Quindi cliccare con il pulsante destro del mouse sulla cartella dei Contatti, quindi scegliere Proprietà; apparirà la finestra delle proprietà dei contatti, quindi nella scheda Generale alla voce All'inserimento in questa cartella, usa scegliere il modulo personalizzato dall'elenco a discesa, quindi uscire cliccando su Ok.

A questo punto all'inserimento di un nuovo contatto verrà visualizzato il nostro modulo personalizzato al posto di quello standard; se si vuole tornare al modulo standard quale predefinito basterà ritornare nella finestra delle proprietà dei Contatti e scegliere nella scheda Generale alla voce All'inserimento in questa cartella, usa il modulo IPM.Contact
Tags:
posted by Andrea Perotti @ 08.54 Permalink , ,
Inviare mailing utilizzando le categorie dei contatti di Outlook
mercoledì, 19 settembre 2007
Vediamo come creare un mailing utilizzando come filtro le categorie dei contatti di Outlook, come se si trattasse di una lista di distribuzione.
Prima di tutto in Outlook un metodo per inviare contemporaneamente mail a gruppi di persone è quello di far uso delle liste di distribuzione, che però hanno il difetto di essere scarsamente flessibili nella gestione.
Abbiamo però la possibilità di assegnare categorie ai vari elementi di Outlook, compresi i contatti; le categorie non sono altro che parole chiave o etichette, che sono facilmente filtrabili e selezionabili, a seconda delle nostre esigenze, permettendoci quindi di avere un veloce metodo per creare una lista di distribuzione personalizzata, di volta in volta, secondo i criteri e bisogni del momento.
La prima fase è quindi quella di assegnare categorie ai contatti: passare alla visualizzazione Contatti, selezionare i contatti ai quali si desidera assegnare una particolare etichetta, cliccare sul pulsante Categorizza, presente sulla barra degli strumenti standard e nel menù che apparirà scegliere Tutte le categorie. Quindi cliccare sul pulsante Nuova e assegnare un nuovo nome alla categoria che si sta creando. A questo punto è possibile uscire confermando e i contatti selezionati in precedenza saranno assegnati alla categoria appena creata.
Ripetere l'operazione per tutti i contatti, creando le categorie appropriate o scegliendo quelle già presenti.
La seconda fase consiste nel creare una mailing list includendo i contatti relativi a determinate categorie.
Visualizzare i contatti di Outlook e impostare la visualizzazione Per categorie (tramite il riquadro della visualizzazione corrente sulla sinistra oppure tramite il menù Visualizza -> Visualizzazione corrente -> Per categoria).
Selezionare le intestazioni delle categorie dei contatti ai quali inviare la mailing list.
A questo punto selezionare il menù Azioni -> Crea -> Nuovo messaggio al contatto e cliccar su Ok.
Outlook ha inserito tutti i contatti appartenenti alle categorie selezionate nel campo A:
Da tener presente che se un contatto è presente in più categorie, chiaramente verrà preso in considerazione una sola volta.
Poichè è consigliato inviare il mailing senza mostrare gli indirizzi dei destinatari, posizionarsi nel campo A: quindi digitare CRTL+A e CRTL+X
Spostarsi nel campo CCn e digitare CRTL+V
Se il campo CCn non è visualizzato selezionare la scheda Opzioni e il pulsante Mostra CCn (in Outlook 2003 Menù Visualizza -> Campo CCn).
posted by Andrea Perotti @ 08.00 Permalink , ,
Raggruppare per colore i fogli di una cartella di Excel
martedì, 18 settembre 2007
Se in una cartella di Excel avete applicato un colore alle schede dei fogli, è possibile raggruppare tali schede in base al loro colore.
Chiaramente questa funzionalità è valida solo a partire dalla versione 2002 (XP) di Excel e successive, visto che nelle versioni precedenti non era presente l'opzione per colorare le schede.
Aprire il file che contiene i fogli che devono essere raggruppati per colore.
A questo punto dovendo lavorare tramite codice VBA apriamo la relativa finestra:
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Sub GroupSheetsByColor()
Dim Ndx As Long
Dim Ndx2 As Long
For Ndx = 1 To Worksheets.Count - 1
For Ndx2 = Ndx To Worksheets.Count
If Worksheets(Ndx2).Tab.ColorIndex = _
Worksheets(Ndx).Tab.ColorIndex Then
Worksheets(Ndx2).Move after:=Worksheets(Ndx)
End If
Next Ndx2
Next Ndx
End Sub
Chiudere quindi la finestra di Visual Basic e tornare in Excel.
Passiamo quindi all'elenco delle Macro
In Excel 2003 Strumenti -> Macro -> Macro
In Excel 2007 Scheda Sviluppo -> Pulsante Macro
Eseguire quindi la Macro "GroupSheetsByColor"
I fogli presenti nella cartella di Excel saranno ora raggruppati secondo il loro colore.
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
Tags:
posted by Andrea Perotti @ 10.00 Permalink , ,
Ordinare fogli di lavoro in una cartella Excel
lunedì, 17 settembre 2007
E' possibile ordinare in maniera automatica i fogli di lavoro presenti in una cartella di Excel, secondo un ordine alfabetico o numerico.
Vediamo come:
Ordinamento alfabetico
Aprire il file che contiene i fogli che devono essere ordinati.
A questo punto dovendo lavorare tramite codice VBA apriamo la relativa finestra:
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Sub SortWorksheets()
Dim N As Integer
Dim M As Integer
Dim FirstWSToSort As Integer
Dim LastWSToSort As Integer
Dim SortDescending As Boolean
SortDescending = False
If ActiveWindow.SelectedSheets.Count = 1 Then
FirstWSToSort = 1
LastWSToSort = Worksheets.Count
Else
With ActiveWindow.SelectedSheets
For N = 2 To .Count
If .Item(N - 1).Index <> .Item(N).Index - 1 Then
MsgBox "You cannot sort non-adjacent sheets"
Exit Sub
End If
Next N
FirstWSToSort = .Item(1).Index
LastWSToSort = .Item(.Count).Index
End With
End If
For M = FirstWSToSort To LastWSToSort
For N = M To LastWSToSort
If SortDescending = True Then
If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
Else
If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
End If
Next N
Next M
End Sub
Chiudere quindi la finestra di Visual Basic e tornare in Excel.
Passiamo quindi all'elenco delle Macro
In Excel 2003 Strumenti -> Macro -> Macro
In Excel 2007 Scheda Sviluppo -> Pulsante Macro
Eseguire quindi la Macro "SortWorksheets"
I fogli presenti nella cartella di Excel saranno ora elencati secondo l'ordinamento alfabetico.
L'ordinamento verrà effettuato in senso crescente se invece è necessario ordinare in senso decrescete allora si dovrà impostare a True il valore SortDescending.
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
Ordinamento numerico
Aprire il file che contiene i fogli che devono essere ordinati.
A questo punto dovendo lavorare tramite codice VBA apriamo la relativa finestra:
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo) e copiare il codice riportato sotto:
Sub SortWorksheetsNumeric()
Dim N As Integer
Dim M As Integer
Dim FirstWSToSort As Integer
Dim LastWSToSort As Integer
Dim SortDescending As Boolean
SortDescending = False
If ActiveWindow.SelectedSheets.Count = 1 Then
FirstWSToSort = 1
LastWSToSort = Worksheets.Count
Else
With ActiveWindow.SelectedSheets
For N = 2 To .Count
If .Item(N - 1).Index <> .Item(N).Index - 1 Then
MsgBox "You cannot sort non-adjacent sheets"
Exit Sub
End If
Next N
FirstWSToSort = .Item(1).Index
LastWSToSort = .Item(.Count).Index
End With
End If
For M = FirstWSToSort To LastWSToSort
For N = M To LastWSToSort
If SortDescending = True Then
If CInt(Mid(Worksheets(N).Name, 6)) > _
CInt(Mid(Worksheets(M).Name, 6)) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
Else
If CInt(Mid(Worksheets(N).Name, 6)) < _
CInt(Mid(Worksheets(M).Name, 6)) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
End If
Next N
Next M
End Sub
Chiudere quindi la finestra di Visual Basic e tornare in Excel.
Passiamo quindi all'elenco delle Macro
In Excel 2003 Strumenti -> Macro -> Macro
In Excel 2007 Scheda Sviluppo -> Pulsante Macro
Eseguire quindi la Macro "SortWorksheetsNumeric"
I fogli presenti nella cartella di Excel saranno ora elencati secondo l'ordinamento numerico.
L'ordinamento verrà effettuato in senso crescente se invece è necessario ordinare in senso decrescete allora si dovrà impostare a True il valore SortDescending.
Se vogliamo rendere disponibile questa funzione in modo tale da trovarla all'avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.
Tags:
posted by Andrea Perotti @ 17.06 Permalink , ,
Sommare le celle in Excel in base alla formattazione
giovedì, 30 agosto 2007
Immaginiamo di avere un intervallo di celle in Excel, B5:B20, e di voler sommare le celle di questo intervallo in base alla loro formattazione; ad esempio abbiamo bisogno di sommare tutte le celle che hanno il carattere o lo sfondo rosso e il testo in grassetto.
Prima di tutto si deve lavorare tramite codice VBA quindi apriamo la relativa finestra.
In Excel XP o 2003:
Menù Strumenti - Macro - Visual Basic Editor
In Excel 2007:
Bottone di Office - Pulsante Opzioni di Excel - Impostazioni generali - Opzione "Mostra scheda Sviluppo sulla barra multifunzione"
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare il codice riportato sotto:
Function FormatSum(rCriteriaCell As Range, rRange As Range)
Dim rcell As Range
Dim bMatch As Boolean
Dim vResult
For Each rcell In rRange
With rcell
bMatch = (rCriteriaCell.Interior.ColorIndex = _
.Interior.ColorIndex And _
rCriteriaCell.Font.ColorIndex = _
.Font.ColorIndex And _
rCriteriaCell.Font.Bold = _
.Font.Bold And _
rCriteriaCell.Font.Italic = _
.Font.Italic And _
rCriteriaCell.Font.Underline = .Font.Underline)
End With
If bMatch = True Then
vResult = WorksheetFunction.Sum(rcell) + vResult
End If
Next rcell
FormatSum = vResult
End Function
=FormatSum(Formato;Intervallo)
In cui:
Formato: La cella contenente il formato di riferimento
Intervallo: Le effettive celle da sommare
Esempio: =FormatSum($B$5;B5:B20)
Somma, nell'intervallo B5:B20, tutte le celle che hanno il formato presente nella cella B20 (esempio testo o sfrondo rosso in grassetto).
Nel nostro esempio la cella del formato può essere qualsiasi cella, contenente qualsiasi formato.
P.S.
Se nella cella di riferimento viene modificato il formato, l'aggiornamento del risultato della somma non è automatico; il cambiamento di un dato nelle celle dell'intervallo da sommare farà si che il risultato venga ricalcolato.
Invece il metodo più veloce per far si che la somma si aggiorni automaticamente quando cambiate il formato delle celle nell'intervallo, è quello di applicare il formato nelle celle che dovranno essere aggiunte alla somma copiandolo da una cella già formattata utilizzando il pulsante Copia Formato presente sulla barra degli strumenti di Formattazione.
Etichette: Excel, Informatica, Microsoft
posted by Andrea Perotti @ 00.10 Permalink , ,
Evidenziare dati ripetuti in Excel
venerdì, 20 luglio 2007
Come fare per evidenziare in una colonna o in una riga di Excel i dati ripetuti?
Immaginiamo di avere lungo una colonna o una riga una serie di numeri casuali e di voler far si che tutte le celle che contengono valori che appaiono più di una volta vengano colorate in rosso.
Dovremo ricorrere alla formattazione condizionale in cui la condizione è la formula CONTA.SE
La situazione di partenza è la seguente:

Ciò che vogliamo ottenere è che tutti i numeri ripetuti vengano evidenziati con un colore, ad esempio rosso.
In Excel XP/2003
Posizionarsi sulla cella B3 e attivare la finestra della Formattazione Condizionale tramite il menù Formato -> Formattazione Condizionale, scegliendo la formula è come condizione e come parametro la funzione =CONTA.SE(B:B;B3)>1
Assegnare quindi tramite il pulsante Formato... la formattazione desiderata per le celle ripetute.

Cliccare quindi su ok; se il numero contenuto all'interno della cella B3 è presente altre volte nella colonna B, la cella stessa prenderà la formattazione che abbiamo assegnato nella finestra della Formattazione Condizionale.
A questo punto copiare la cella B3 e tramite Incolla Speciale incollare il formato in tutte le celle dell'elenco.
In Excel 2007
Posizionarsi sulla cella B3 e attivare la finestra della Formattazione Condizionale tramite la Scheda Home -> Gruppo Stili -> Pulsante Formattazione Condizionale -> Comando Nuova regola
Selezionare la regola Utilizza una formula per determinare le celle da formattare e inserire la funzione =CONTA.SE(B:B;B3)>1
Assegnare quindi tramite il pulsante Formato... la formattazione desiderata per le celle ripetute.

Cliccare quindi su ok; se il numero contenuto all'interno della cella B3 è presente altre volte nella colonna B, la cella stessa prenderà la formattazione che abbiamo assegnato nella finestra della Formattazione Condizionale.
A questo punto copiare la cella B3 e tramite Incolla Speciale incollare il formato in tutte le celle dell'elenco.
Il risultato finale è il seguente:

N.B.: nella formula =CONTA.SE(B:B;B3)>1 l'intervallo B:B rappresenta tutta la colonna ma può essere sostituito con la selezione delle sole celle da analizzare o con il nome del gruppo di celle.
Lo stesso discorso vale anche se i dati da prendere in considerazione non sono lungo la colonna ma lungo la riga.
N.B.2: In Excel 2007 in realtà ciò che si è detto sopra è automatico in quanto la Formattazione Automatica prevede già la possibilità di evidenziare i valori duplicati.
Basterà selezionare l'intervallo che contiene i dati duplicati quindi scegliere la Scheda Home -> Gruppo Stili -> Pulsante Formattazione Condizionale -> Regole evidenziazione celle -> Valori duplicati

In questa finestra di dialogo basterà scegliere il tipo di formattazione che si vuole applicare alle celle che contengono i valori duplicati.
posted by Andrea Perotti @ 08.25 Permalink , ,



