Microsoft Excel

Microsoft Excel

mercoledì 25 febbraio 2015

“Codici a barre” con Excel per la gestione di un piccolo magazzino

Per generare “codici a barre” personalizzati con Excel, pronti per essere stampati e applicati sui prodotti consultare il blog pmi http://www.pmi.it/tecnologia/software-e-web/tutorial/7013/codici-a-barre-con-excel.html
Per generare codici a barre con Excel è necessaria una routine vba che trasforma il codice del prodotto in un codice a barre non formattato e istallare in windows il font Code EAN13 che formatta il codice nelle usuali “barre a spessore”. Tutto questo può essere scaricato gratuitamente dal sito http://grandzebu.net.
 Il procedimento da seguire per ottenere un semplice foglio di calcolo per la gestione di un piccolo magazzino è il seguente:
1.       Collegarsi al sito http://grandzebu.net e scaricare il font Code EAN13 e il foglio di calcolo con la routine vba per generare il codice a barre alfanumerico (“non formattato”). Come fare ciò è ben spiegato nel blog pmi …………………. Il font Code EAN 13 formatta il codice alfanumerico e restituisce il codice con “barre a spessore”.
2.       Completiamo il foglio di calcolo aggiungendo altre colonne contenenti il soggetto che prende in carico il prodotto, la data di presa in carico del prodotto, la quantità, la data di presa in carico, ecc. Nominare il foglio come “Carico”.
La funzione ean13 è la routine vba che genera il codice alfanumerico. La routine è un modulo all’interno del campo Codice. La finestra del campo Codice si raggiunge dalla Barra delle Applicazioni→ Sviluppo →  Codice → Visual Basic


Le celle della colonna “D” sono semplicemente formattate con il font Code EAN13 e restituiscono il codice a barre corrispondente al codice alfanumerico della colonna “C”.
Disponiamo adesso dei codici a barre che possiamo stampare e applicare ai prodotti del nostro piccolo magazzino.

3.     Passare a un secondo foglio della stessa cartella e nominarlo “Scarico”. Nominare la prima colonna come “Codice Alfanumerico”, la seconda “Codice a barre”, la terza “Prodotto”, la quarta la “Restituito da” e così via. La colonna “A” contiene il codice alfanumerico restituito dal lettore (scanner) di barcode, le colonne “D” e “E” sono da compilare manualmente, mentre le altre colonne contengono formule tipo quella riportata nella barra della funzione della fig. sotto e per inserire in automatico i dati di “Carico”. Infine la colonna “H” conteggia il tempo di detenzione del prodotto: con la formattazione condizionale della cella possiamo verificare visivamente quanto tempo (in questo caso se è maggiore di 30 gg la cella diventa rossa). Dopo la lettura con lo scanner del codice a barre del prodotto restituito (riportato in colonna “A”), il foglio di “Scarico” si presenta come sotto.
4.       Acquistare uno scanner di codici a barre e collegarlo alla porta usb del vs. computer. Uno scanner di codice a barre è un dispositivo che “decodifica” il codice a barre restituendo il codice alfanumerico. Procedere come al punto 5.
Una alternativa economica e dinamica all’acquisto di uno scanner a pistola è utilizzare come scanner uno smartphone con una “app” specifica per la lettura dei codici a barre. Io utilizzo uno smartphone lumia 635 e l’applicazione “Barcode Search”. Scaricare l’app dal sito di Windows phone sullo smartphone. L’app legge in automatico il codice barcode del prodotto. Attivare la pagina “list” e cliccare su “Excel” in alto a sinistra. L’app restituisce direttamente in excel (di office 365, cioè la versione web di excel). A questo punto non rimane altro che scaricare il file excelweb sul proprio excel v. desktop (in questo caso non è necessario procedere al punto 5).

5.      Attivare il foglio “Scarico” e attivare la prima cella libera della colonna “Codice Alfanumerico” (nel ns. esempio attivare la cella A3). Passare lo scanner sul codice a barre applicato sul prodotto in restituzione. Il lettore restituisce il codice alfanumerico nella cella attiva del foglio e attiva la cella successiva. Si ottiene un risultato analogo alla riga 2 della figura precedente.
6.       A questo punto non rimane altro che compilare le colonne “D” e “E”.
 
Adesso abbiamo il controllo del materiale in entrata e uscita dal magazzino.
Buon Lavoro
Daniele Paolinelli

“Reverse geocode”: Come geolocalizzare e inserire punti in mappa con excel e smartphone

Spesso risulta utile rilevare la posizione di “punti” specifici sul territorio per poterli poi inserire in mappa. Altrettando importante è l’aggiornamento della mappa in seguito a una variazione della posizione dei punti. La posizione di un punto è individuata quando si conoscono le coordinate del punto (x,y,z oppure lat, lon, ∆h). La posizione di un punto nel piano è il punto di intersezione di tre circonferenze aventi centri in punti noti (punti di riferimento). (Nella pratica si misurano angoli e distanze dei triangoli e si parla quindi di triangolazioni). Generalmente, maggiore è il numero di triangolazioni è più precisa è la posizione del punto (accuratezza). Le “moderne” triangolazioni sono fatte misurando le distanze a terra con il segnale radio emesso alla velocità della luce c (nota) dai satelliti in orbita intorno alla Terra. In questo caso la posizione del punto è uno dei (due) punti di intersezione di tre sfere che hanno centro in satelliti di posizione nota. La misura del raggio della sfera è D = c x T, dove c~3*10^8 m/s è la velocità della luce nota e T è il tempo che impiega il segnale per andare dal satellite al ricevitore. Nel calcolo del tempo c’è l’errore predominante della misura della distanza. Ciò è dovuto alla precisione degli orologi dei dispositivi (orologio atomico molto preciso e costoso sul satellite e orologi al quarzo meno precisi e costosi sui dispositivi a terra). L’errore nel calcolo del tempo modifica il raggio della sfera e quindi la misura della distanza: le tre sfere non si incontrano più in un punto (cioè due punti) ma delimitano una superficie di “incertezza”. La correzione “dell’incertezza” viene fatta assegnando nuovi diametri per le sfere (con l’aiuto di un quarto satellite). L’accuratezza delle misura dipende poi dal numero di satelliti disponibili per il rilievo del punto, oltre che dai calcoli di correzione della misura. Infine, precisioni maggiori (fino alcuni metri) si raggiungono con il GPS differenziale (DGPS): ci si “appoggia” ad una stazione di riferimento GPS a terra, di altissima qualità e di coordinate note.
In conclusione: il segnale emesso dai satelliti viene catturato da potenti antenne di dispositivi mobili a terra di tipo professionale. Essi sono dotati di estrema precisione e sono utilizzati per il rilievo di strade, dighe, rilievo del territorio, e in genere per tutte le mappature che richiedono un elevato livello di accuratezza della misura. In alternativa, quando non è richiesta una estrema precisione nella posizione del punto, come ad esempio quando è necessario conoscere la posizione dei cassonetti stradali o dei cestini di raccolta dei rifiuti, possiamo utilizzare come dispositivo mobile il nostro smartphone. La sua antenna è in grado di captare il segnale dei satelliti. Una specifica “app”, che contiene il software per il calcolo delle coordinate, è in grado di restituire le coordinate di lat, lon e altitudine del punto rilevato.
Per la posizione del punto procedere ne seguente modo:
1.     Dotarsi di uno smartphone con almeno 8 gb di memoria. Io utilizzo un Nokia Lumia 635.
2.      Acquistare una app. Io ho acquistato l’app Geolocalizer di Daniele De Gan



Le varie “app” hanno una precisione diversa. In genere la precisione orizzontale è di 10 mt.

3.     Posizionarsi sul punto e attivare la “app”. Essa restituisce in automatico le coordinate del punto.

4.     Riportare le coordinate sul foglio excel, nel ns. caso nelle celle D27 ed E27. Le coordinate si scrivono con il punto al posto della virgola. Le coordinate corrette sono scritte nella cella C29.
5.     Inserire la mappa in excel. Si procede come nel blog “Ottenere una mappa con un itinerario con Bing Maps”. In definitiva si deve ottenere un url come quello di B37 (scritto per esteso in B40).

6.    Cliccando sul bottone si ottiene la mappa statica con il marcatore (marker) che individua il punto di coordinate inserite.
Buon Lavoro
Daniele Paolinelli

giovedì 19 febbraio 2015

Come utilizzare i form di google per notificare informazioni via mail a più indirizzi


I form di google sono moduli on line che vengono utilizzati per sondaggi e per acquisizione di informazioni in genere. I moduli si costruiscono in maniera intuitiva, partendo da https://docs.google.com/forms/. I moduli vengono poi compilati direttamente on-line (possono essere pubblicati su un sito web o accessibili conoscendo il link di collegamento) oppure inviati via email. Una volta che il modulo compilato viene inviato, le informazioni contenute vengono direttamente acquisite (registrate) da un foglio elettronico di google, associato al modulo stesso. Esso può poi essere esportato sul desktop in diversi formati. Google dispone si un’ampia documentazione e in molti hanno già scritto intorno ai form e alla loro personalizzazione lavorando con javascript. Quindi mi limiterò ad un esempio utile nel lavoro, cioè di come utilizzare i form per notificare informazioni via mail a più indirizzi. L’esempio non è altro che una modifica di una funzione di Amit Agarwal chiamata “Sendmail”, riportata nel tutorial http://www.labnol.org/?p=20884 */  ,che invia una notifica a un solo indirizzo.

Spesso nel lavoro risulta utile utilizzare i form per registrare velocemente informazioni ricevute, modificarle e comunicare le risposte via mail ai diretti interessati. Si pensi al caso di un cittadino che richiede lo smaltimento di un rifiuto ad un tecnico in servizio di controllo sul territorio. La richiesta viene registrata direttamente “in situ”, compilando il modulo on-line sul tablet, e trasmessa via mail al centralino dell’azienda e all’utente stesso. Oppure al caso di due dipendenti che richiedono telefonicamente un’inversione del turno di servizio assegnato. La richiesta di “cambio turno” viene registrata direttamente on-line dal tecnico, e comunicata agli interessati per l’accettazione via email. Quando richieste di questo tipo sono numerose, come avviene nelle aziende medio-grandi, si rende necessario “automatizzare” il processo che invia notifiche a più indirizzi.
Si procede in questo modo:

1.      Accedere a Google Drive e creare un nuovo foglio elettronico. Si noti che la colonna più a sin., “informazioni cronologiche” è generata “in più” dal foglio elettronico ed è la colonna 0 (zero). Le intestazioni delle colonne sono generate direttamente dal database una volta compilato il primo modulo.

Un foglio già compilato è simile a quello sotto riportato.


2.      Strumenti → Crea Modulo → Costruire il modulo con l’aggiunta di elementi. In particolare aggiungere i campi “indirizzo mail del mittente” e “indirizzo mail destinatario” in quanto vogliamo inviare le notifiche ai dipendenti.

Nella visualizzazione mail il modulo è simile a quello sotto riportato, dove compaiono due caselle di controllo (elenco a discesa), chiamate “indirizzi mail mittente” e “indirizzi mail destinatario”, che contengono gli indirizzi email dei dipendenti.




3.     Modificare lo script del modulo. Strumenti → Editor di script. Cancellare lo script esistente e copiare lo script del tutorial http://www.labnol.org/?p=20884 */
4.      Modificare lo script del tutorial allo scopo di notificare le mail ad entrambi i dipendenti.
       Lo script risulta modificato nella righe

MailApp.sendEmail(email1, subject, message)
MailApp.sendEmail(email2, subject, message)
Dove

var email1 = e.values [8];
var email2 = e.values [9];
sono due variabili che assumono il valore contenuto nella cella della Colonna 8 e 9 che nel ns. caso è l’indirizzo mail

/* Send Google Form by Email v2.1 */
/* For customization, contact the developer at amit@labnol.org */
/* Tutorial: http://www.labnol.org/?p=20884 */
                function Initialize() {
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
}
  ScriptApp.newTrigger("SendGoogleForm")
  .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
  .onFormSubmit()
  .create();
}
function SendGoogleForm(e)
{ 
  try
 {     

 // You may replace this with another email address
    var email1 = e.values [8];
    var email2 = e.values [9];

// Optional but change the following variable
               // to have a custom subject for Google Form email notifications

   var subject = "Google Docs Form Submitted"; 
   var s = SpreadsheetApp.getActiveSheet();

   var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];   

   var message = "";   

   // Only include form fields that are not blank

    for ( var keys in columns ) {

    var key = columns[keys];

    if ( e.namedValues[key] && (e.namedValues[key] != "") ) {

    message += key + ' :: '+ e.namedValues[key] + "\n\n";

      }

    }

    // This is the MailApp service of Google Apps Script
    // that sends the email. You can also use GmailApp for HTML Mail.

    MailApp.sendEmail(email1, subject, message)
    MailApp.sendEmail(email2, subject, message)

  } catch (e) {

    Logger.log(e.toString());

  }

}

Compilare il form e inviarlo via mail. Il database registra le informazioni contenute nel modulo. Inoltre i richiedenti ricevono una notifica del tipo:


In conclusione, lavorando con i moduli e la loro automazione, siamo in grado di misurare, gestire e controllare i servizi richiesti e effettuati.

Buon Lavoro
Daniele Paolinelli