{"id":752,"date":"2013-10-19T15:16:45","date_gmt":"2013-10-19T13:16:45","guid":{"rendered":"http:\/\/www.office-guru.com\/wordpress\/?p=752"},"modified":"2014-04-12T17:08:45","modified_gmt":"2014-04-12T15:08:45","slug":"estrarre-dati-da-cartelle-e-files-chiusi","status":"publish","type":"post","link":"https:\/\/www.office-guru.com\/wordpress\/2013\/10\/estrarre-dati-da-cartelle-e-files-chiusi\/","title":{"rendered":"026. Estrarre dati da cartelle e files chiusi"},"content":{"rendered":"<div style=text-align:right;><a class=\"wpptopdfenh\" target=\"_blank\" rel=\"noindex,nofollow\" href=\"https:\/\/www.office-guru.com\/wordpress\/2013\/10\/estrarre-dati-da-cartelle-e-files-chiusi\/?format=pdf\" title=\"Download PDF\"><img alt=\"Download PDF\" src=\"https:\/\/i0.wp.com\/www.office-guru.com\/wordpress\/wp-content\/plugins\/wp-post-to-pdf-enhanced\/asset\/images\/pdf.png?w=584\" data-recalc-dims=\"1\"><\/a><\/div><p><em><strong>Domanda:<\/strong><\/em><\/p>\n<p>Sono alla ricerca di una macro vba che mi permetta di andare a leggere dei dati su foglio 1 di excel di varie cartelle di una cartella denominata Magazzino<\/p>\n<p>Magazzino<br \/>\n\/abete\/1098.xls\/foglio1<br \/>\n\/abete\/1099.xls\/foglio1<br \/>\n\/acero\/2097.xls\/foglio1<br \/>\n\/acero\/2120.xls\/foglio1<br \/>\necc.<\/p>\n<p>Dovrei sommare in un nuovo foglio i valori contenuti nei vari foglio1 dell&#8217;elenco ad albero delle celle: G8, K8. M8, per poter fare la somma dei mq in giacenza, dei mq venduti e del valore rimasto.<br \/>\nIl magazzino contiene pi\u00f9 di 400 fogli suddivisi in circa 160 cartelle.<\/p>\n<p><!--more--><em><strong>Risposta:<\/strong><\/em><\/p>\n<p>Per risolvere la necessit\u00e0 del lettore ho creato la macro \u201cAggiornaRiepilogo\u201d<br \/>\nche si lancia con il tasto \u201cAggiorna Tutto\u201d presente nella cella \u201cF2\u201d.<\/p>\n<p>Come prima cosa bisogna inserire nel foglio \u201cConfig\u201d cella \u201cA2\u201d il percorso di rete della cartella \u201cMagazzino\u201d.<br \/>\nAll\u2019apertura del file d\u2019esempio il percorso configurato \u00e8 quello del mio PC<br \/>\ned un controllo sull\u2019esistenza della cartella Magazzino richieder\u00e0 di aggiornarlo inserendo il percorso dove avrete salvato i file d\u2019esempio.<\/p>\n<p>Ho utilizzato il FileSystemObject attraverso il quale con un ciclo For Next passo in tutte le sottocartelle contenute nella cartella \u201cMagazzino\u201d e per ogni file in esse presente estraggo per prima cosa i dati per popolare la tabella del Ripilogo:<\/p>\n<p>&#8211; dal nome della sottocartella ho ricavato il tipo di Articolo<\/p>\n<pre>Sheet1.Cells(r, 1) = Right(fos, Len(fos) - Len(Percorso) - 1)<\/pre>\n<p>&#8211; dal nome del file ho ricavato il Codice<\/p>\n<pre>Sheet1.Cells(r, 2) = Left(f1.Name, Len(f1.Name) - 4)<\/pre>\n<p>&#8211; dalla data di ultima modifica del file la data di ultima modifica<\/p>\n<pre>Sheet1.Cells(r, 6) = f1.DateLastModified<\/pre>\n<p>Ho utilizzato la propriet\u00e0 \u201c.Path\u201d dei singoli file per ricavare il nome del file comprensivo di percorso<br \/>\nda inserire negli Hyperlink posti sotto la colonna \u201cDettaglio\u201d<\/p>\n<pre>ActiveSheet.Hyperlinks.Add Anchor:=Sheet1.Cells(r, 7), Address:=f1.Path, TextToDisplay:= \"APRI FILE\"<\/pre>\n<p>In questo modo si potranno aprire I file per verificare i dati riportati o modificarli, senza andarli a cercare.<\/p>\n<p>La valorizzazione dei dati relativi a\u00a0 \u201cmq in giacenza \u201c , \u201cmq venduti\u201d e\u201dvalore\u00a0 residuo\u201d<br \/>\nviene effettuata aprendo ciascun file<\/p>\n<pre>Workbooks.Open (f1.Path)<\/pre>\n<p>e copiandone i valori delle celle che ci interessano<\/p>\n<pre>Sheet1.Cells(r, 3) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"G8\")\r\nSheet1.Cells(r, 4) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"K8\")\r\nSheet1.Cells(r, 5) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"M8\")<\/pre>\n<p>Alla fine dell\u2019operazione chiudo il file aperto<\/p>\n<pre>ActiveWorkbook.Close<\/pre>\n<p>Posto che la numerosit\u00e0 dei file da analizzare usati nella creazione del codice \u00e8 assai inferiore a quella reale (16 file contro pi\u00f9 di 400)<br \/>\nho voluto evitare la brutta sensazione di rimanere lunghi minuti davanti ad uno schermo vuoto senza sapere a che punto \u00e8 la lavorazione.<\/p>\n<p>All\u2019apertura del file, la macro pubblica \u201cContaTotaleFile\u201d valorizza la variabile \u201cTotaleFile\u201d con il numero totale presenti nella cartella \u201cMagazzino\u201d<\/p>\n<p>Tale variabile \u00e8 resa pubblica inserendo all\u2019inizio del modulo \u201cConta_TotaleFile\u201d la dichiarazione<\/p>\n<pre>Public TotaleFile As Integer<\/pre>\n<p>Il suo valore \u00e8 riportato nello Sheet \u201cRiepilogo\u201d nella cella \u201cJ2\u201d.<br \/>\nIn questo modo \u00e8 possibile utilizzarla durante l\u2019esecuzione della macro \u201cAggiornaRiepilogo\u201d.<br \/>\nAl suo interno ho creato la variabile \u201cFileAnalizzati\u201d , dichiarata come numero ed inizializzata:<\/p>\n<pre>Dim FileAnalizzati As Integer\r\nFileAnalizzati = 0<\/pre>\n<p>Ogni volta che aggiorno il Riepilogo, ad ogni file analizzato incremento il valore della variabile FileAnalizzati<\/p>\n<pre>FileAnalizzati = FileAnalizzati + 1<\/pre>\n<p>A questo punto posso far vedere nella cella \u201cG2\u201d del foglio Riepilogo, formattata come percentuale,<br \/>\nlo stato di avanzamento dell\u2019analisi<\/p>\n<pre>Sheet1.Range(\"G2\") = FileAnalizzati \/ TotaleFile<\/pre>\n<p>ed il numero dei file analizzati<\/p>\n<pre>Sheet1.Range(\"J3\") = FileAnalizzati<\/pre>\n<p>&nbsp;<\/p>\n<p>Faccio eseguire la macro \u201cContaTotaleFile\u201d in apertura del file, per fornire uno strumento di controllo all\u2019utilizzatore:<br \/>\nopotizzando che tra l\u2019aggiornamento del Riepilogo e la sua riapertura siano stati inseriti nuovi file,<br \/>\nla macro li conter\u00e0 automaticamente e la cella \u201cJ3\u201d si colorer\u00e0 di rosso per evidenziare che il numero dei file analizzati con l\u2019ultimo aggiornamento non corrispondono a quelli attuali.<\/p>\n<p>Sempre in relazione all\u2019elevata numerosit\u00e0 dei file da analizzare, ho realizzato una macro che permette di aggiornare i dati di un singolo file senza dover aggiornare tutti gli altri (comoda se si modifica un file e si vuole aggiornare velocemente il Riepilogo)<\/p>\n<p>Si seleziona una cella della colonna \u201cAriticolo\u201d che si desidera aggiornare<br \/>\n(ho inserito un controllo per verificare che sia stata selezionata una cella contenente il dato necessario)<br \/>\ne si preme il tasto \u201cAggiorna\u201d presente nella cella \u201cB5\u201d.<\/p>\n<p>La macro \u201cAggiornaSelezionato\u201d apre il file di cui si vogliono riportare i dati aggiornati<br \/>\nutilizzando il percorso precedentemente archiviato nell\u2019Hyperlink contenuto della colonna \u201cDettaglio\u201d<\/p>\n<pre>For Each PathDaAprire In Sheet1.Cells(Selected_Row, 7).Hyperlinks\r\n    PathDaAprire.Follow\r\nNext<\/pre>\n<p>A questo punto il codice \u00e8 lo stesso della macro generale con l\u2019eccezione che utilizza il numero della riga della cella selezionata<\/p>\n<pre>Selected_Row = Selection.Row\r\nSheet1.Cells(Selected_Row, 3) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"G8\")\r\nSheet1.Cells(Selected_Row, 4) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"K8\")\r\nSheet1.Cells(Selected_Row, 5) = ActiveWorkbook.Sheets(\"Foglio1\").Range(\"M8\")<\/pre>\n<p>NB:<\/p>\n<p>per il corretto funzionamento delle macro \u00e8 necessario:<br \/>\n&#8211; non modificare il posizionamento delle colonne e l\u2019intestazione \u201cARTICOLO\u201d<br \/>\n&#8211; che i file da analizzare abbiamo sempre lo stesso layout di quelli dei file d\u2019esempio<br \/>\n&#8211; che la cartella Magazzino contenga solo i file da analizzare.<\/p>\n<p>In caso di esigenze diverse si dovr\u00e0 modificare il codice.<\/p>\n<p>A voi il file:<br \/>\n<a href=\"http:\/\/www.office-guru.com\/wordpress\/2013\/10\/estrarre-dati-da-cartelle-e-files-chiusi\/magazzino\/\">APRI<\/a><\/p>\n<p>Riccardo Vincenti<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Domanda: Sono alla ricerca di una macro vba che mi permetta di andare a leggere dei dati su foglio 1 di excel di varie cartelle di una cartella denominata Magazzino Magazzino \/abete\/1098.xls\/foglio1 \/abete\/1099.xls\/foglio1 \/acero\/2097.xls\/foglio1 \/acero\/2120.xls\/foglio1 ecc. Dovrei sommare in un &hellip; <a href=\"https:\/\/www.office-guru.com\/wordpress\/2013\/10\/estrarre-dati-da-cartelle-e-files-chiusi\/\">Continua a leggere<span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"_links_to":"","_links_to_target":""},"categories":[13,6],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/p39IU1-c8","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1145,"url":"https:\/\/www.office-guru.com\/wordpress\/2014\/04\/estrarre-dati-da-cartelle-e-files-chiusi-2\/","url_meta":{"origin":752,"position":0},"title":"048. Estrarre dati da cartelle e files chiusi &#8211; 2","date":"11 Aprile 2014","format":false,"excerpt":"Domanda: La mia necessit\u00e0 \u00e8 quella di copiare da file chiusi xls sempre le stesse celle (a4:u200), che si trovano in una cartella in \"c:\/dati\" e incollarli,nel file attivo in quel momento chiamato archivio, sulla prima riga libera partendo dalla colonna A in sequenza, senza lasciare righe libere. Risposta: Ho\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":520,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/04\/creare-file-con-vba-ed-inviarli-via-mail-avanzato\/","url_meta":{"origin":752,"position":1},"title":"017. Creare file con VBA ed inviarli via mail (avanzato)","date":"20 Aprile 2013","format":false,"excerpt":"Ciao a tutti, in questo giorni ho modificato il Tool che invia allegati tramite email seguendo alcune necessit\u00e0 di Alessandra. Le modifiche sono le seguenti: 1) verifica della presenza dei nomi inseriti nella base dati con quelli presenti in elenco e segnalazione di eventuali assenze 2) selezione attraverso di un\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1119,"url":"https:\/\/www.office-guru.com\/wordpress\/2014\/04\/salvataggio-periodico\/","url_meta":{"origin":752,"position":2},"title":"046. Salvataggio periodico file","date":"3 Aprile 2014","format":false,"excerpt":"Domanda: E\u2019 possibile tramite una macro creare ad intervalli temporali definiti una copia del file su cui st\u00f2 lavorando e salvarla sul computer? Risposta: Questa esigenza era stata risolta da Andrea nell\u2019articolo che trovate al link: http:\/\/terzaghi.blogspot.it\/2008\/02\/salvataggio-automatico-di-un-foglio-di.html Ho ripreso il suo codice apportando alcune modifiche in quanto era stato creato\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":873,"url":"https:\/\/www.office-guru.com\/wordpress\/2014\/01\/archivio-con-fotografie-degli-articoli\/","url_meta":{"origin":752,"position":3},"title":"035. Archivio con Fotografie degli articoli","date":"22 Gennaio 2014","format":false,"excerpt":"Damanda: devo associare la foto in formato jpg di una regione italiana quando nella descrizione di un vino compare il nome di quella regione. naturalmente ci sono 20 regioni + alcune nazioni x i vini esteri e le immagini devono comparire iu una cella con il risultato di un cerca\u2026","rel":"","context":"In &quot;Excel&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":606,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/05\/estrarre-dati-da-file-diversi-senza-aprirli-ad-uno-ad-uno\/","url_meta":{"origin":752,"position":4},"title":"020. Estrarre dati da file diversi senza aprirli ad uno ad uno","date":"3 Maggio 2013","format":false,"excerpt":"Domanda: Ho una cartella contenente diversi file excel che per comodit\u00e0 chiamer\u00f2 a.xls, b.xls, c.xls, ecc.. Ognuno di questi file ha nel foglio 1 una tabella (identica per tutti i file) con due colonne di dati (a e b) La mia esigenza \u00e8 quella di trovare una formula\/macro che sommi\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":829,"url":"https:\/\/www.office-guru.com\/wordpress\/2014\/01\/selezione-file-tramite-finestra-di-dialogo\/","url_meta":{"origin":752,"position":5},"title":"029. Selezione File tramite finestra di dialogo","date":"16 Gennaio 2014","format":false,"excerpt":"Domanda: Ho una macro che per eseguire le varie operazioni previste necessita dell\u2019apertura di pi\u00f9 file ogni volta di nome diverso. Avrei pertanto bisogno di creare una MsgBox all\u2019interno della macro per selezionare i file che devono essere uitilizzati.\u00a0 Ringrazio in anticipo per la Vostra attenzione. Risposta: Per selezionare un\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts\/752"}],"collection":[{"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":7,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts\/752\/revisions"}],"predecessor-version":[{"id":1205,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts\/752\/revisions\/1205"}],"wp:attachment":[{"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/categories?post=752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/tags?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}