_ L’estrazione dei dati da un file chiuso in un’altra cartella di lavoro è una richiesta comune dalla maggior parte degli utenti di Excel. Vorrebbero estrarre o consolidare i dati da file chiusi; tuttavia, questo non è possibile. C’è una soluzione alternativa che aiuta a risolvere questo problema. La soluzione è usare il codice Macro._

Domanda: Ogni giorno, passo il tempo a copiare i dati da un file a un altro. Ci sono due file “Open.xls” e “Closed.xls” e voglio copiare i dati da “Closed.xls” a “Open.xls” tramite codice VBA.

===

Cose chiave 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, ad es. “Open.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, #N / A è messo in atto. Utilizzando il metodo specialcells, è quindi possibile eliminare tutti gli errori # N / A e modificare la formula in valori Per iniziare, salveremo due file excel 1) Open.xls 2) Closed.xls nel percorso “D: \ Test Cartella “Di seguito è riportata l’istantanea della cartella di lavoro” Closed.xls “:

img1

Per salvare automaticamente i dati dal file “Closed.xls” al file “Open.xls”, dobbiamo seguire i passaggi seguenti per avviare l’editor di VB. * Copia il codice sottostante in ThisWorkbook (Closed.xls)

img2

  • Per estrarre i dati in “Open.xls”, copiare il seguente codice nel modulo standard

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _

Cancel As Boolean)

'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment

Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address

End Sub

img3

  • Copia il seguente codice in ThisWorkbook (Open.xls)

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)

With Sheet1.Range(AreaAddress)

.FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _

"[Closed.xls]Sheet1'!RC)"

On Error Resume Next

.SpecialCells(xlCellTypeFormulas, xlErrors).Clear

On Error GoTo 0

.Value = .Value

End With

End Sub

img4

Ora i codici VBA sono tutti impostati; tutto quello che dobbiamo fare è aprire il nome del file “Open.xls”. Di seguito è riportata l’istantanea del file “Open.xls”:

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

Il codice non è limitato alla copia della cella da A1.usedrange; il codice sceglierà l’intervallo di partenza e funzionerà perfettamente. I file sono disponibili per il download e ti consigliamo di provare.

img6

===

Conclusione: con il codice VBA, possiamo automatizzare l’attività di estrazione dei dati senza aprire la cartella di lavoro di destinazione e ci risparmiamo dal copiare e incollare manualmente.

Se i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.

rar icon

_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_