Unità USB



  • Unità USB
    di Paolo (utente non iscritto) data: 09/10/2015 19:07:19

    Ho la macro "salva con nome" che mi salva il file posto in una directory di una unità USB esterna in una directory della stessa unità USB, attribuendogli il nome che è inserito nella cella A1 del foglio1. Il file viene salvato nella directory Ufficiolavoroanno2015 dell'unità USB; il percorso è indicato dalla cella B1. Il problema che a secondo del PC sul quale lavoro a tale unità esterna viene attribuita la lettera E, a volte la F, altre volte la G: è possibile che alla unità esterna venga attribuito sempre la stessa lettera, ad esempio la lettera G, indipendentemente dal PC sul quale si opera?.



  • di Marius44 data: 09/10/2015 19:15:32

    Ciao Paolo
    premetto che è sempre utile e gradito che venga allegato un file (senza dati sensibili) in modo da poterlo analizzare. Dalle notizie che dai dovrebbe (il condizionale è d'obbligo) essere possibile far leggere alla macro il percorso del file (la Path) e quindi far salvare il file nelle stesso percorso, indipendentemente dalla lettera che il PC ha assegnato.
    Ciao,
    Mario



  • di Paolo (utente non iscritto) data: 09/10/2015 19:25:21

    Ho allegato il file. Nel foglio "dati" in F2 c'è il percorso in cui il file deve essere salvato. E' evidente che perchè funzioni l'unità esterna delle avere sempre la lettera F. Grazie...



  • di Marius44 data: 09/10/2015 20:12:16

    Ciao Paolo
    La macro "salvaconnome" è la seguente

    Sub salvaconnome()
    ActiveWorkbook.SaveAs FileName:=Range("Dati!f2") & Range("Dati!b1").Value & ".xlsm"
    ActiveWorkbook.Close
    Application.Quit
    End Sub

    Sostituiscila con quella sotto riportata.

    Fammi sapere. Ciao,
    Mario
     
    Sub salvaconnome()
    percorso=ActiveWorkbook.Path
    percorso=percorso & Range("Dati!f2") & Range("Dati!b1").Value & ".xlsm"
    ActiveWorkbook.SaveAs FileName:=percorso
    ActiveWorkbook.Close
    Application.Quit
    End Sub



  • di Paolo (utente non iscritto) data: 10/10/2015 16:56:08

    Ho provato, ma non funziona, dà errore di routine 1004.



  • di Marius44 data: 10/10/2015 23:04:10

    Ciao Paolo
    Uso la versione Excel2007 ed ho testato la sub sotto riportata con risultato positivo, cioè salva il file con il testo in A1 di Foglio1
    Ho messo uno Stop per verificare se il percorso era esatto , quindi, ho tolto i riferimenti a Excel2007 e ho rimesso i tuoi (che, dici, funziona).
    Prova a mettere al posto di Sheets(1) il riferimento al tuo foglio ed alla tua cella.

    Fammi sapere. Ciao,
    Mario

     
    Sub salvaconnome()
    percorso = ActiveWorkbook.Path
    newfilename = Sheets(1).Range("A1") & ".xls"
    percorso = percorso & newfilename
    Stop
    'percorso = percorso & Range("Dati!f2") & Range("Dati!b1").Value & ".xlsm"
    ActiveWorkbook.SaveAs Filename:=percorso
    ActiveWorkbook.Close
    Application.Quit
    End Sub
    



  • di Marius44 data: 11/10/2015 08:08:28

    Ciao Paolo
    Guardando meglio la macro penso che sia da sostituire questa riga:

    percorso = percorso & Range("Dati!f2") & Range("Dati!b1").Value & ".xlsm"

    con quella sotto riportata.
    Fammi sapere. Ciao,
    Mario
     
    percorso = percorso & Sheet("Dati").Range("F2") & Sheet("Dati").Range("B1") & ".xlsm"
    



  • di Albatros54 data: 11/10/2015 12:28:02

    Nella cella D2 del foglio Dati cancella f: e diventa "UfficioVisite sorveglianza sanitariaSedi2
    incolla in un modulo il codice sotto,apri il file da una unita USB e lancia la macro dovrebbe funzionare.
    Ciao
    Albatros54
     
    Sub salvaconnome()
    percorso = ActiveWorkbook.Path
    percorso = percorso & Range("Dati!f2")
    If Len(Dir(percorso, vbDirectory)) = 0 Then
    MsgBox " La cartella non esiste"
    'MkDir (percorso)
    Shell ("cmd /c mkdir """ & percorso & """")
    Else
    MsgBox "La cartella esiste"
    
    End If
    ActiveWorkbook.SaveAs FileName:=percorso & Range("Dati!b1").Value & ".xlsm"
    ActiveWorkbook.Close
    Application.Quit
    End Sub






  • di paolo (utente non iscritto) data: 12/10/2015 15:44:26

    Purtroppo non funziona ancora; nel senso che mi memorizza sì il file, ma non nella cartella voluta, bensì crea ex novo un'altra cartella, denominata Ufficio, nella quale crea una sottocartella denominata Visita mediche sorveglianza sanitaria, nella quale crea la sottocartella Sedi, nella quale salva il file. In pratica, non utilizza il percorso indicato, ma ne cre un altro, analogo, ex novo.




  • di Albatros54 data: 12/10/2015 16:01:09

    Fammi capire: tu hai una pendrive, la inserisci in una porta USb apri ed hai questo path "f:UfficioVisite sorveglianza sanitariaSedi" da dove carichi il file xlsm ? o hai il file.xlsm nella radice.
    Fammi capire
    Ciao
    Albatros54





  • di Marius44 data: 12/10/2015 17:40:11

    Nel primo post è scritto
    cit.: Ho la macro "salva con nome" che mi salva il file posto in una directory di una unità USB esterna in una directory della stessa unità USB, attribuendogli il nome che è inserito nella cella A1 del foglio1.

    Come vedi, non "potrebbe" succedere quello che dice Paolo, però "pare" che accada.

    La sub che ho suggerito (con le dovute correzioni apportate) a me funziona, anche togliendo e reinserendo la chiavetta. Proprio non capisco.

    Aspettiamo Paolo.
    Ciao,
    Mario



  • di paolo (utente non iscritto) data: 12/10/2015 21:24:58

    Il file xlms è nella directory F:UfficioVisite sorveglianza sanitaria; il file che deve essere salvato deve andare invece nella directory F:UfficioVisite sorveglianza sanitariaSediA, ove A rappresenta il norme della Sede (ad. esempio: Milano). Nel foglio dati in F2 è memorizzato il percorso F:UfficioVisite sorveglianza sanitariaSediA, dove il nome della sede A viene presso attraverso la funzione concatena dalla cella B2 del foglio dati; dalla cella B1 invece è preso il nome con cui il file è salvato. Succede invece che con la macro di Albatros54, posto che il file assuma il nome Pippo Antono, viene salvato il file in una nuova cartella denominata Ufficio, diversa da quella che già esiste, all'interno di una nuova directory denominata Visite sorveglianza sanitaria. Proprio non riesco a capire perchè non funziona, eppure ho copiato la macro di Albatros (con copia ed incolla)



  • di Marius44 data: 12/10/2015 23:52:11

    Ciao Paolo
    Guarda la macro sotto: ho commentato ogni riga per farti capire come funziona.
    Attento al nome del tuo Foglio ed alle celle dalle quali deve recuperare i dati.
    Provala e fammi sapere.
    Ciao,
    Mario
     
    Sub salvaconnome()
    'fare attenzione al nome del Foglio (maiuscolo o minuscolo?) ed alle celle dove sono i nomi
    percorso = ActiveWorkbook.Path                  'Lettera ed percorso del file dove stai lavorando
    percorso = percorso & "Sedi"                  'aggiunge al percorso la dicitura Sedi
    percorso = percorso & Sheet("Dati").Range("B2") 'aggiunge il nome della Sede
    percorso = percorso & Sheet("Dati").Range("B1") & ".xls"    'aggiunge come deve essere salvato il file ed il suffisso
    Stop
    ActiveWorkbook.SaveAs Filename:=percorso
    ActiveWorkbook.Close
    Application.Quit
    End Sub



  • di Raffaele_53 data: 13/10/2015 02:26:15

    Ciao a tutti
    Se il files originale è dentro la cartella ?:UfficioVisite sorveglianza sanitariaSCHEMA _VISITA.xlsm
    e desideri salvarlo in Alessandria (C2) col nome (B1)...desideri salvarlo come xlsx o xlsm?
    Premesso che se la directory Alessandria non esiste il codice la crea.
    Le ultime due righe si annullano a vicenda, pertanto dovrai scegliere quella più idonea a Te
     
    Sub salvaconnome2()
    Dim Percorso As String
    Percorso = ActiveWorkbook.Path & "Sedi" & Sheets("Dati").Range("C2") 'Lettera ed percorso del file dove salverai
    If Len(Dir(Percorso, vbDirectory)) = 0 Then
        Shell ("cmd /c mkdir """ & Percorso & """")
    End If
    Percorso = Percorso & "" & Sheets("Dati").Range("B1") & ".xlsm"    'aggiunge il nome del file ed il suffisso
    ActiveWorkbook.SaveAs Filename:=Percorso
    'ActiveWorkbook.Close 'col fatto che il file è chiuso, però excel è ancora aperto
    'Application.Quit 'col pericolo che se hai due/tre file aperti li chiude tutti
    End Sub