Ciao MissRachele.
Il sottoriportato codice avrai cura di attivarlo nel primo modulo di avvio
del tuo programma (FrmSplash, FrmMAIN o Sub Main).
Nella tua directory, ove avrai salvato il progetto, crea una Cartella con
il Nome Support, nella predetta cartella copierai la cartella principale
(nell'esempio DATI) e tutte le relative sottocartelle contenenti i
dati e/o immagini.
Dopo aver compilato l'.exe dovrai masterizzare il prog. sul CD;
in questa fase avrai cura di riportare sul CD anche la cartella Support che
conterrà DATI e SubCartelle.
Nella fase d'installazione del prog. sarà avviato il sotto esposto codice che individua
la lettera dell'unità CD e provvede alla copia di tutte le cartelle contenenti i Dati e/o
immagini sull'HD.
codice:
Private Sub Form_Load()
On Error GoTo ErrHandler
Dim SourceFile As String
Dim DestinFile As String
Dim sPath As String
Dim strNameFold As String
Dim FSO As FileSystemObject
Dim Drv As Drive
'Progetto>riferimenti>Click su Microsoft Scripting Runtime:
Set FSO = New FileSystemObject
'Cursore Clesidra:
Screen.MousePointer = 11
' Al primo avvio controlla che la cartella DATI NON esista,
' allora la copia dal CD:
If (FSO.FolderExists(App.Path & "\" & "DATI")) = False Then
' Cerca la lettera del CD_ROM o nell'Unità removibile attiva:
For Each Drv In FSO.Drives
If Drv.DriveType = 4 And Drv.IsReady Or _
Drv.DriveType = 1 And Drv.IsReady Then
sPath = Drv.DriveLetter & ":\"
Exit For
End If
Next
' Copia la cartella DATI e le Sottocartelle dal CD all'HD:
SourceFile = sPath & "Support\" & "DATI"
DestinFile = App.Path & "\" & "DATI"
FSO.CopyFolder SourceFile, (App.Path & "\" & "DATI")
MsgBox "La cartella DATI e le relative sottocartelle, sono state" & vbCr _
& "copiate con successo in " & DestinFile & ".", vbInformation, "Prova Copia delle Cartelle sull'HD"
End If
ErrHandler:
If Err.Number <> 0 Then
MsgBox "Errore durante il tentativo di copia della cartella DATI: " & vbCr & "Numero errore: " & Err.Number & vbCr & _
"Descrizione: " & Err.Description, vbCritical, "Prova Copia delle Cartelle sull'HD"
Err.Clear
End If
'Se la copia da Support è fallita, Ricontrolla se esiste la cartella DATI
'altrimenti la crea; in questo caso i dati andranno copiati (copia-incolla) "a mano"
'dal CD all'HD nelle rispettive sottocartelle, create con il codice di seguito riportato:
If (FSO.FolderExists(App.Path & "\" & "DATI")) = False Then
With FSO
.CreateFolder (App.Path & "\" & "DATI")
.CreateFolder (App.Path & "\" & "DATI\Sottocartella1")
.CreateFolder (App.Path & "\" & "DATI\Sottocartella2")
'. ....
End With
strNameFold = FSO.GetFolder(App.Path & "\" & "DATI")
MsgBox "La cartella DATI e le relative sottocartelle, sono state" & vbCr _
& "create con successo in " & strNameFold & _
" I Dati devono essere trasferiti dal CD alle SubCartelle.", vbInformation, "Prova Copia delle Cartelle sull'HD"
End If
ErrHandlerCreaFol:
If Err.Number <> 0 Then
MsgBox "Errore durante il tentativo di creare la cartella DATI: " & vbCr _
& "Numero errore: " & Err.Number & vbCr & "Descrizione: " & Err.Description, vbCritical, "Prova Copia delle Cartelle sull'HD"
Err.Clear
Screen.MousePointer = 0
Set FSO = Nothing
Exit Sub
End If
'Cursore Standard:
Screen.MousePointer = 0
Set FSO = Nothing
End Sub
Il codice l'ho provato (sembra funzionare), ma occorre comunque qualche rifinitura che lasci a te.