L'estrazione di dati da un file chiuso in un'altra cartella di lavoro è una richiesta comune da parte della maggior parte degli utenti excel. Vorrebbero estrarre o consolidare i dati da file chiusi; tuttavia, questo non è possibile. C'è una soluzione che aiuta a risolvere questo problema. La soluzione sta usando il codice Macro.
Domanda: Ogni giorno, passo il tempo a copiare i dati da un file all'altro. Ci sono due file "Open.xls" e "Closed.xls" e voglio copiare i dati da "Closed.xls" a "Open.xls" tramite il codice VBA.
Cose fondamentali da sapere:
- La prima cosa è che dovremmo conoscere "Usedrange" della cartella di lavoro chiusa, ad esempio "Closed.xls" all'interno della cartella di lavoro aperta per es. “Apri.xls”
- Possiamo usare la funzione IF in Usedrange della cartella di lavoro "Closed.xls" all'interno della cartella di lavoro "Open.xls" e estrarrà i dati dalla cartella di lavoro "Closed.xls"
- Se la cella di riferimento è vuota, viene inserito #N/A. Utilizzando il metodo specialcells, puoi quindi eliminare tutti gli errori #N/A e modificare la formula in valori
Per cominciare, salveremo due file excel 1) Open.xls 2) Closed.xls nel percorso “D:\Test Folder”
Di seguito è riportato lo snapshot della cartella di lavoro "Closed.xls":
Per salvare automaticamente i dati dal file "Closed.xls" al file "Open.xls", dobbiamo seguire i passaggi seguenti per avviare l'editor VB
- Fare clic sulla scheda Sviluppatore
- Dal gruppo Codice, seleziona Visual Basic
- Copia il codice seguente in ThisWorkbook (Closed.xls)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Inserisci l'indirizzo UsedRange di Sheet1 Closed.xls (questa cartella di lavoro)' --- Comment Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
- Per estrarre i dati in “Open.xls”, copiare il seguente codice nel Modulo Standard
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells( 1, 1) Con Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D: \Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Riprendi successivo .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
- Copia il seguente codice in ThisWorkbook (Open.xls)
Private Sub Workbook_Open() Esegui "Importdata" End Sub
Ora i codici VBA sono tutti impostati; tutto ciò che dobbiamo fare è aprire il nome del file "Open.xls". Di seguito è riportata l'istantanea del file "Open.xls":
Il codice non è limitato alla copia della cella da A1.usedrange; il codice sceglierà l'intervallo iniziale e funzionerà perfettamente. I file sono disponibili per il download e ti consigliamo di provare.
Conclusione: Con il codice VBA, possiamo automatizzare l'attività di estrazione dei dati senza aprire la cartella di lavoro di destinazione e ci risparmiamo di copiare e incollare manualmente.
Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica