Salvare la cartella su penna USB (o
dovunque si desideri).
Per salvare
la cartella attiva su una penna USB la soluzione più veloce è quella di
chiamare la finestra di dialogo "Salva con nome" nella quale si potrà
scegliere su quale unità presente sul nostro PC, compreso quindi anche unità
USB connesse al PC salvare; nella finestra verrà automaticamente
inserito il nome della cartella aperta, ma ognuno potrà sceglere un altro
nome a piacere.
Sfrutteremo la proprietà "Dialogs" (dell'oggetto "Application")
che sfrutterà il metodo Show della costante "xlDialogSaveAs"
una possibile routine di esempio potrebbe essere:
Sub SalvaFile()
nome = Application.Dialogs(xlDialogSaveAs).Show
EndSub
che produrrà la finestra che vediamo sotto, e che porta in
automatico il nome del file al momento aperto da salvare e dovre avremo scelto una
penna USB, vista come disco rimovibile dal SO:
Il suggerimento sopra è in aggiunta a quanto descritto
nell'articolo "Salvare una cartella
di lavoro" e in sostituzione di un mio articolo ormai obsoleto "Salvare
(meglio: copiare) un file sul floppy", ma
volendo sottilizzare, giusto per usare altre soluzioni per restare nel tema
del titolo di questo articolo, vediamo come gestire il FileSystemObject per cercare l'unità (USB) che ci
interessa , controllare inoltre lo spazio disponibile dell'unità, e
porre la domanda se vogliamo usare questa unità o altra disponibile. Vorremo
poi controllare se lo spazio disponibile sulla penna potrà accettare la
dimensione del file da salvare.
Questa una possibile routine, in verde i commenti; la ricerca
della penna USB si fa cercando i Drives che se restituiscono 1 significa
che l'unità è rimovibile; inoltre, dato lo scompenso sicuramente esistente
tra la dimensione dalla penna, in genere diversi GB, e la dimensione di una
cartella che di solito è nellordine di KB, i messaggi di avviso saranno
proprzionati: (sia AvaibleSpace che FileLen restituiscono sempre misure
espresse in byte)
Sub CercaUSBeSalva()
On Error Resume Next
Dim fs, D, dc, Contali
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
For Each D In dc
' inizia il ciclo che cerca tutte le
unità di memorizzazione del computer
If D.drivetype = 1 Then
'nel caso che il tipo di drive letto
restituisca 1, quindi unità rimovibile
a = D.driveletter
'con la variabile "a" memoriziamo la
lettera di unità data dal SO
b = Format(D.AvailableSpace / 1000024, "###,00")
' e con "b" memorizziamo il suo spazio libero
in MB
'sotto: la funzione FileLen() richiede il
percorso completo di unità e/o directory dove risiede il file da 'misurare:
poichè dobbiamo predisporre una istruzione che legga il percorso del file
ora attivo, usiamo una 'variabile (za) che legge il percorso (Path)
della cartella attiva
ze = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
'dobbiamo quindi sapere anche la dimensione
za = Format(FileLen(ze) / 1024, "000,00")
' della cartella attiva ze (con la variabile za)
in MB
Stringa = "Trovata Unità: " & a & " - " & D.volumename & " - " & " MB Liberi
: " & b
'prepariamo la stringa
Dim iDom As Integer
iDom = MsgBox(Stringa & " VUOI SALVARE SU QUESTA USB ??", vbYesNo)
' e avvisiamo se si desidera 'salvare
su questa unità
If iDom = vbYes Then
'se la risposta sarà positiva allora
controlliamo se la dimensione della cartella da
If za> b Then ''salvare e
maggiore dello spazio libero sulla penna, se avvisiamo ed usciamo dalla
routine
MsgBox "IMPOSSIBILE salvare: spazio su questa unità insufficiente"
Exit Sub
End If
Cartella = ThisWorkbook.Name '
ActiveWorkbook.SaveCopyAs a & ":\" & Cartella
MsgBox "File salvato"
End If
End If
Next
Resume
End Sub
|
è
evidente che se non esisteranno dischi rimovibili (o USB) nel PC la routine
si esaurisce senza salvare un bel niente e senza essere avvisati.
Esistono comunque altri metodi per salvare la cartella di lavoro o comunque
file del computer come ad esempio il metodo
Application.GetSaveAsFilename
ma di questo ne parleremo un altra volta.
buon lavoro.
prelevato sul sito
www.ennius.altervista.org
|