029. Selezione File tramite finestra di dialogo

Download PDF

Domanda:

Ho una macro che per eseguire le varie operazioni previste necessita dell’apertura di più file ogni volta di nome diverso. Avrei pertanto bisogno di creare una MsgBox all’interno della macro per selezionare i file che devono essere uitilizzati.  Ringrazio in anticipo per la Vostra attenzione.

Risposta:

Per selezionare un file esterno al file in uso, per poi utilizzarlo come base dati,
si può utilizzare comodamente il file dialog di Windows chiamato “msoFileDialogFilePicker”

Lo si dichiara e lo si apre con le seguenti istruzioni:

 Dim fDialog As Office.FileDialog
 Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

    With fDialog
        .AllowMultiSelect = False
        .Title = "Seleziona il file da aprire"
        .InitialFileName = ThisWorkbook.Path & "\Archivio" 'DA MODIFICARE
        If .Show = -1 Then

            For Each selezione In .SelectedItems
                FileDaAprire = selezione
            Next
        Else
        MsgBox "Operazione annullata!", vbInformation
        Exit Sub
        End If
    End With

La proprietà “.InitialFileName” permette di indicare la cartella predefinita da far apparire alla sua apertura. Nell’esempio ho impostato una cartella “Archivio” contenuta nella stessa cartella del file dal quale si lancia la macro:

.InitialFileName = ThisWorkbook.Path & “\Archivio”

Per impostare come predefinita la cartella “Documenti”, potete modificare in:

.InitialFileName = “C:\Documenti”

Se non si seleziona nessun file e si preme “Cancella” viene aperto il messaggio “Operazione annullata!” ed interrotta l’esecuzione della macro.

Una volta selezionato il file da aprire, assegno ad esso un variabile da utilizzare per richiamarlo
(tale variabile comprende il percorso del file ed il suo nome)

            For Each selezione In .SelectedItems
                FileDaAprire = selezione
            Next

Utilizzo la seguente istruzione per aprire il file selezionato utilizzando la variabile sopradefinita (che comprende il percorso del file)

Application.Workbooks.Open (FileDaAprire)

e subito definisco la variabile che contiente solo il nome del file appena aperto.
Servirà per chiudere la finestra excel una volta terminate le istruzioni della macro.

Una volta aperto il file si possono inserire le righe di codice per il proprio scopo.

Nel caso d’esempio, cerco all’interno delle intestazioni quella chiamata “TOTALE”, e ne copio i dati dalla prima all’ultima riga del foglio

Range(Cells(2, COL_TOTALE), Cells(Last_Row, COL_TOTALE)).Select
Selection.Copy

Attivo quindi il file contenente la macro

 Windows(NomeFileConMacro).Activate

che ho provveduto a parametrizzare all’inizio della routine

NomeFileConMacro = ThisWorkbook.Name

A questo punto posso incollare i dati a partire dall’ultima cella non vuota

Sheet1.Select
Last_Row = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Cells(Last_Row + 1, 3).Select
ActiveSheet.Paste

Terminate le operazioni da fare, chiudo il file che avevo selezionato

Windows(NomeFileDaAprire).Close

A voi il file:
APRI

Riccardo Vincenti

The following two tabs change content below.