{"id":1129,"date":"2014-04-09T16:20:50","date_gmt":"2014-04-09T14:20:50","guid":{"rendered":"http:\/\/www.office-guru.com\/wordpress\/?p=1129"},"modified":"2014-04-12T17:33:33","modified_gmt":"2014-04-12T15:33:33","slug":"copia-file-con-condizione","status":"publish","type":"post","link":"https:\/\/www.office-guru.com\/wordpress\/2014\/04\/copia-file-con-condizione\/","title":{"rendered":"047. Copia File con condizione"},"content":{"rendered":"<div style=text-align:right;><a class=\"wpptopdfenh\" target=\"_blank\" rel=\"noindex,nofollow\" href=\"https:\/\/www.office-guru.com\/wordpress\/2014\/04\/copia-file-con-condizione\/?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>Domanda:<\/p>\n<p>Avrei bisogno di una macro che mi permetta di copiare i soli file di testo di una specifica directory che contengono una specifica stringa alfanumerica dalla directory sorgente ad un&#8217;altra da specificare.<\/p>\n<p>Risposta:<\/p>\n<p>E\u2019 possibile risolvere il problema con una solo macro che verifica presenza della stringa nel nome del file e lo copia direttemente (v2)<br \/>\no con due macro, una per la verifica ed una per la copia, per un maggiore controllo dell\u2019operazione (v1)<\/p>\n<p>Vediamo il secondo caso, le cui macro sono contenute nel modulo \u2018v1\u2019.<\/p>\n<p><!--more-->Prima di lanciare la macro dovrete modificare il seguente codice inserendo quello della cartella sul vostro computer<\/p>\n<pre> PercorsoDefault = \"C:\\Users\\rvincenti\\Desktop\\Copia File con condizione\\SORGENTE\\\"<\/pre>\n<p>Bottone \u201cv1 &#8211; <strong>Verifica condizione<\/strong>\u201d<\/p>\n<p>Con il codice<\/p>\n<pre>Dim fDialog As Office.FileDialog\r\n Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)\r\n Dim selezione As Variant<\/pre>\n<p>faccio aprire il File Dialog per selezionare la cartella che contiene i file da analizzare.<br \/>\nDopo aver selezionato la cartella e cliccato su \u201cOK\u201d<br \/>\nattribuisco alla variabile \u2018Percorso\u2019 il percorso della cartella selezionata<br \/>\nPercorso = selezione<\/p>\n<p>Utilizzo questa variabile nell\u2019istruzione<\/p>\n<pre> Set f = fs.GetFolder(Percorso)<\/pre>\n<p>contenuta nel seguente blocco di codice<\/p>\n<pre>r = 3\r\nDim fs, f, f1, s, sf\r\nSet fs = CreateObject(\"Scripting.FileSystemObject\")\r\nSet f = fs.GetFolder(Percorso)\r\nSet sf = f.Files\r\n\r\nFor Each f1 In sf\r\n\r\nSheet1.Cells(r, 1) = f1.Path\r\nSheet1.Cells(r, 2) = f1.Name\r\n\r\nIf f1.Name Like \"*EL_CONTROLS*\" Then\r\n   Sheet1.Cells(r, 3) = \"DA COPIARE\"\r\nEnd If\r\n\r\nr = r + 1\r\n\r\nNext<\/pre>\n<p>che cicla all\u2019interno di tutti i file contenuti nella cartella \u2018Percorso\u2019<br \/>\ne scrive il percorso completo dei file trovati ed il loro nome<\/p>\n<pre>Sheet1.Cells(r, 1) = f1.Path\r\nSheet1.Cells(r, 2) = f1.Name<\/pre>\n<p>Nel caso d\u2019esempio ho stabilito di cercare la stringa \u2018EL_CONTROLS\u2019<\/p>\n<pre>If f1.Name Like \"*EL_CONTROLS*\"<\/pre>\n<p>Ho messo gli asterischi prima e dopo per cercare tutte le parole che contengono la stringa al suo interno.\u00a0Altre condizioni impostabili:<\/p>\n<p>If f1.Name = &#8220;EL_CONTROLS&#8221;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0&gt;&gt;&gt; il nome del file deve essere uguale a \u201cEL_CONTROLS&#8221;<br \/>\nIf f1.Name Like &#8220;EL_CONTROLS*&#8221;\u00a0 \u00a0&gt;&gt;&gt; il nome del file deve iniziare con \u201cEL_CONTROLS&#8221;<br \/>\nIf f1.Name Like &#8220;*EL_CONTROLS&#8221; \u00a0 &gt;&gt;&gt; il nome del file deve finire con \u201cEL_CONTROLS&#8221;<\/p>\n<p>Tornando al codice, una volta che il nome del file soddisfa la condizione desiderata,<br \/>\nviene scritto &#8220;DA COPIARE&#8221; nella colonna \u201cC\u201d<\/p>\n<p>A questo punto, siamo in grado di vedere quali file saranno copiati.<\/p>\n<p>Bottone \u201c<strong>v1 &#8211; Copia File\u201d<\/strong><\/p>\n<p>Prima di lanciare la macro dovrete modificare il seguente codice inserendo quello della cartella sul vostro computer\u00a0dove andranno copiati i file<\/p>\n<pre>Dim PercorsoDestinazione As String\r\n PercorsoDestinazione = \"C:\\Users\\rvincenti\\Desktop\\Copia File con condizione\\DESTINAZIONE\\\"<\/pre>\n<p>Con il seguente codice:<\/p>\n<pre>Last_Row = Sheet1.Cells.Find(\"*\", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row\r\n\r\nFor i = 3 To Last_Row\r\n\r\nIf Sheet1.Cells(i, 3) = \"DA COPIARE\" Then\r\nCall CopiaFile(Sheet1.Cells(i, 1), PercorsoDestinazione &amp; Sheet1.Cells(i, 2))\r\nSheet1.Cells(i, 4) = \"File COPIATO\"\r\nEnd If\r\n\r\nNext i<\/pre>\n<p>ciclo su tutte le righe compilate dalla macro precedente e dove nella colonna C \u00e8 scritto &#8220;DA COPIARE&#8221;,\u00a0 richiamo la funzione \u201cCopiaFile\u201d che ha 2 argomenti<\/p>\n<p>Origine &gt;&gt;&gt; Sheet1.Cells(i, 1)<br \/>\nDestinazione &gt;&gt;&gt; PercorsoDestinazione &amp; Sheet1.Cells(i, 2))<\/p>\n<p>Se si dovesse decidere di non far copiare uno o pi\u00f9 dei file, basta cancellare il testo \u201cDA COPIARE\u201d della corrispondente riga.<\/p>\n<p>Come suggerisce il nome, la funzione copia i file nelal cartella di idestinazione sopra definita.<br \/>\nATTENZIONE:<br \/>\nil nome del file di destinazione DEVE essere uguale a quello di origine.<\/p>\n<p>A voi il file:<br \/>\n<a href=\"http:\/\/www.office-guru.com\/wordpress\/?attachment_id=1131\/\u200e\">APRI<\/a><\/p>\n<p>Riccardo Vincenti<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Domanda: Avrei bisogno di una macro che mi permetta di copiare i soli file di testo di una specifica directory che contengono una specifica stringa alfanumerica dalla directory sorgente ad un&#8217;altra da specificare. Risposta: E\u2019 possibile risolvere il problema con &hellip; <a href=\"https:\/\/www.office-guru.com\/wordpress\/2014\/04\/copia-file-con-condizione\/\">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-id","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":689,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/08\/normalizzare-db-con-laiuto-dellalgoritmo-soundex\/","url_meta":{"origin":1129,"position":0},"title":"022. Normalizzare DB con l&#8217;aiuto dell&#8217;algoritmo Soundex","date":"7 Agosto 2013","format":false,"excerpt":"Domanda: \u201cstoricamente nell\u2019arco di alcuni decenni, differenti persone in differenti modi hanno raccolto dati. La raccolta ammonta ad un totale di circa 3.000 celle all\u2019anno per ogni foglio ed \u00e8 un incubo perch\u00e8 lo stile dei fogli \u00e8 stato stravolto dall\u2019avvicendarsi eterogeneo di decine di collaboratori diversi che si sono\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":652,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/06\/salvataggio-solo-foglio-attivo\/","url_meta":{"origin":1129,"position":1},"title":"Salvataggio del solo foglio attivo","date":"3 Giugno 2013","format":false,"excerpt":"Domanda: Avrei bisogno di aiuto avrei la necessit\u00e0 di salvare il foglio attivo dove tramite macro ho gi\u00e0 provveduto ad incollare delle cose, il problema \u00e8 che mi salva l\u2019intera cartella e non solo il folglio in questione ho provato sia con ActiveSheet.SaveAs che con ActiveworkBook.saveas ma salva sempre l\u2019intera\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":1129,"position":2},"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":1129,"position":3},"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":455,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/10\/invio-mail-vba-spedire-automaticamente-fogli-excel-tramite-outlook\/","url_meta":{"origin":1129,"position":4},"title":"Invio mail con VBA: Spedire automaticamente fogli Excel tramite Outlook (anche come PDF)","date":"26 Ottobre 2013","format":false,"excerpt":"Il bisogno e' molto semplice: abbiamo una serie di fogli excel (report) da distribuire in modo selettivo a un insieme di colleghi. Vogliamo creare file excel specifici per ogni collega (gruppo di colleghi) contenente i report ad essi destinati vogliamo poter includere in una mail tale file excel (possibilmente senza\u2026","rel":"","context":"In &quot;Domande Lettori&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":699,"url":"https:\/\/www.office-guru.com\/wordpress\/2013\/08\/copiare-file-con-vba\/","url_meta":{"origin":1129,"position":5},"title":"023. Copiare File con VBA","date":"7 Agosto 2013","format":false,"excerpt":"Domanda: Ho una colonna di Excel dove sono riportati una lista di files (comprensivi di percorso) e in un\\'altra colonna il nome di questi files (con percorso destinazione) che integrano nel nome alcune cose. Il problema \u00e8: con VBA come faccio a realizzare una istruzione che mi copi i files\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\/1129"}],"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=1129"}],"version-history":[{"count":4,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts\/1129\/revisions"}],"predecessor-version":[{"id":1233,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/posts\/1129\/revisions\/1233"}],"wp:attachment":[{"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.office-guru.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}