Questo tutorial VBA spiega come salvare un file utilizzando i comandi Salva e Salva con nome in VBA.
Salva cartella di lavoro - VBA
Il comando Salva VBA salva un file Excel in modo simile a quando si fa clic sull'icona Salva o si utilizza il collegamento Salva (CTRL + S).
Salva una cartella di lavoro specificata
Per salvare una cartella di lavoro, fare riferimento all'oggetto cartella di lavoro e utilizzare il comando Salva.
1 | Cartelle di lavoro ("savefile.xlsm"). Salva |
Salva la cartella di lavoro attiva
Nota: questa è la cartella di lavoro attiva corrente da con nel codice VBA, che è diversa da ThisWorkbook che contiene il codice in esecuzione.
Salva la cartella di lavoro in cui è archiviato il codice
Salva tutte le cartelle di lavoro aperte
Questo eseguirà il ciclo di tutte le cartelle di lavoro aperte, salvandole ciascuna.
12345 | Dim wb come cartella di lavoroPer ogni wb in Application.Workbookswb.Salvawb successivo |
Salva tutte le cartelle di lavoro aperte che non sono state aperte in sola lettura
Nota: l'apertura di una cartella di lavoro in modalità di sola lettura impedisce il salvataggio del file.
Per salvare il file dovrai usare Salva con nome e salvare il file con un nome diverso.
1234567 | Dim wb come cartella di lavoroPer ogni wb in Application.WorkbooksSe non wb ReadOnly allorawb.SalvaFinisci sewb successivo |
Salva una cartella di lavoro definita da una variabile
Ciò salverà una cartella di lavoro assegnata a una variabile oggetto cartella di lavoro.
1234 | Dim wb come cartella di lavoroset wb = workbooks ("savefile.xlsm")wb.salva |
Salva una cartella di lavoro definita da una variabile stringa
Ciò salverà una cartella di lavoro il cui nome è stato salvato in una variabile stringa.
1234 | Dim wbstring come stringawbstring = "savefile.xlsm"cartelle di lavoro (stringa wb).salva |
Salva una cartella di lavoro definita dall'ordine in cui è stata aperta.
Nota: la prima cartella di lavoro aperta avrebbe 1, la seconda 2, ecc.
1 | cartelle di lavoro(1).salva |
Salva una cartella di lavoro in base al valore di una cella
Ciò salverà una cartella di lavoro il cui nome si trova in un valore di cella.
1234 | Dim wbstring come stringawbstring = activeworkbook.sheets("sheet1").range("wb_save").valuecartelle di lavoro(wbstring).salva |
Salva con nome - VBA
Il comando Salva con nome VBA salva un file Excel come nuovo file, in modo simile a fare clic sull'icona Salva con nome o utilizzare il collegamento Salva con nome (Alt > F > A).
Sopra, abbiamo identificato tutti i modi per specificare quale cartella di lavoro salvare. È possibile utilizzare esattamente gli stessi metodi per identificare le cartelle di lavoro quando si utilizza Salva con nome.
Salva con nome si comporta in modo simile a Salva, tranne per il fatto che è necessario specificare anche il nome del nuovo file.
In effetti, Salva con nome ha molte potenziali variabili da definire:
Sintassi Salva con nome:
123 | oggetto cartella di lavoro .SaveAs(FileName, FileFormat, Password, WriteResPassword, _Sola letturaConsigliato, Crea backup, Modalità di accesso, Risoluzione conflitti, _AddToMru, TextCodepage, TextVisualLayout, Local) |
Di seguito è inclusa una descrizione completa di tutti gli argomenti SaveAs. Per ora ci concentreremo sugli esempi più comuni.
Nota: questi argomenti possono essere immessi come stringa con parentesi o come variabili definite.
Salva come esempi di sintassi:
Cartella di lavoro Salva con nome - Stessa directory
1 | ActiveWorkbook.SaveAs Nome file: = "nuovo" |
o
1 | ActiveWorkbook.Salva come "nuovo" |
o
1234 | Dim wbstring come stringawbstring = "nuovo"ActiveWorkbook.SaveAs Nome file:= wbstring |
Cartella di lavoro Salva con nome - Nuova directory
1 | ActiveWorkbook.SaveAs Nome file:= "C:\nuovo" |
o
1234 | Dim wbstring come stringawbstring = "C:\nuovo"ActiveWorkbook.SaveAs Nome file:= wbstring= |
Cartella di lavoro Salva con nome - Nuova directory, specifica l'estensione del file
1 | ActiveWorkbook.SaveAs Nome file:= "C:\nuovo.xlsx" |
o
1234 | Dim wbstring come stringawbstring = "C:\nuovo.xlsx"ActiveWorkbook.SaveAs Nome file:= wbstring |
Cartella di lavoro Salva con nome - Nuova directory, specifica estensione file - Metodo Alt
Puoi anche specificare il formato del file nel suo argomento.
1234 | .xlsx = 51 '(52 per Mac).xlsm = 52 '(53 per Mac).xlsb = 50 '(51 per Mac).xls = 56 '(57 per Mac) |
1 | ActiveWorkbook.SaveAs Filename:= "C:\new", FileFormat:= 51 |
Cartella di lavoro Salva con nome - Aggiungi password per aprire il file
1 | ActiveWorkbook.SaveAs Nome file:= "C:\new.xlsx", Password:= "password" |
Cartella di lavoro Salva con nome - Aggiungi password per i privilegi di scrittura
Se non viene fornita la password corretta, la cartella di lavoro si apre come Sola lettura
1 | ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx", WriteRes:= "password" |
Cartella di lavoro Salva con nome - Consigliata in sola lettura
TRUE per visualizzare una finestra di messaggio, che consiglia di aprire il file in sola lettura.
1 | ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx", ReadOnlyRecommended:= TRUE |
Altro Salva come esempi
Crea finestra di dialogo Salva con nome
Questo genera la finestra di dialogo Salva con nome, chiedendo all'utente di salvare il file.
Tieni presente che questo semplice codice potrebbe non essere appropriato in tutti i casi.
1 | Application.GetSaveAsFilename |
Crea finestra di dialogo Salva con nome con il nome file predefinito fornito
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Crea finestra di dialogo Salva con nome con il nome file predefinito fornito
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Crea e salva una nuova cartella di lavoro
Questo creerà una nuova cartella di lavoro e la salverà immediatamente.
123456 | Dim wb come cartella di lavoroImposta wb = Cartelle di lavoro.AggiungiApplication.DisplayAlerts = Falsewb.SaveAs Filename:="c:\Test1.xlsx"Application.DisplayAlerts = True |
Disabilita gli avvisi di salvataggio
Mentre lavori con il salvataggio in VBA, potresti imbatterti in vari avvisi o prompt di salvataggio. Per disabilitare gli avvisi, aggiungi questa riga di codice:
1 | Application.DisplayAlerts=False |
e per riattivare gli avvisi:
1 | Application.DisplayAlerts=Vero |