copiare e incollare dati automaticamente
Hai un problema con Excel? 
copiare e incollare dati automaticamente
di PatMar (utente non iscritto) data: 02/11/2015 16:41:57
Buongiorno,
Vorrei creare un codice VBA che colleghi automaticamente un foglio di un file excel, ad foglio di un altro file excel, (chiusi entrambi) copiandone i dati e struttura.
Il file sorgente è un outputsu di un database access, per cui è cancellato/riscritto/aggiornato ogni volta che il database è lanciato.
Ho già provato a collegare le celle dei due file, ma se il file sorgente viene cancellato, il secondo risulta vuoto, e non si riaggiorna automaticamente.
Come posso fare?
di Marius44 data: 02/11/2015 18:00:00
Ciao PatMar
Premesso che se i file Excel sono chiusi non può succedere nulla! Se il file Access ha una macro che "aggiorna" i dati di uno dei file Excel credo (ma vorrei essere smentito) il file deve essere aperto.
Comunque, il collegamento che vorresti (se si tratta di uno o due dati) è semplicissimo: nel cella del Foglio che vuoi collegare metti "=" e poi vai nel Foglio dove c'è il dato, selezioni la cella e dai Invio. Salvi e chiudi tutto.
Quando riapri il file "collegato" ti dice che ci sono dei collegamenti e ti chiede se vuoi aggiornarli. Guarda in questo momento il dato nella cella: è quello che c'era. Se clicchi su "aggiorna" il dato viene immediatamente aggiornato (aperto o chiuso che sia l'altro file).
Oppure non ho capito niente.
Ciao,
Mario
di PatMar (utente non iscritto) data: 03/11/2015 09:02:40
Sicuramente mi sono spiegata male.
Ho già provato a fare come suggerisci tu, ma non funziona a meno che il file sorgente non sia aperto.
Ripeto più chiaramente. Ho due file excel: il primo, chiamato "elenco dipendenti" è composto da due fogli (Foglio1 "di facciata" che presenta i dati in tabella con formattazione abbellita ed è legato al foglio 2 tramite formule di tipo cerca vert e oppure confronta/indirizzo/indiretto; il Foglio2 invece è una tabella in cui sono raccolti brutalmente dei dati sui dipendenti; questo file deve rimanere così); il secondo file è invece derivato da un outputSu di un database access, e presenta i dati come nel foglio2 del primo file. Vorrei che il foglio2 del primo file e il foglio1 del secondo file siano collegati, o meglio che automaticamente nel foglio2 del primo file siano copiati i dati del foglio1 del secondo file. anche se i file restano chiusi.
Il tuo suggerimento non funziona perchè quando si avvia il database access, il secondo file viene cancellato e riscritto, e si perdono i collegamenti.
Non posso allegare i due file perchè sono presenti dati sensibili aziendali.spero di essermi spiegata meglio
di PatMar (utente non iscritto) data: 03/11/2015 09:09:06
Ho trovato una cosa del genere ma non riesco ad adattarla alle mie esigenze
Public Sub m()
'dichiaro le variabili
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'gestione errori
On Error GoTo RigaErrore
Application.ScreenUpdating = False
'metto i riferimenti ai files
Set wk1 = ThisWorkbook
Set wk2 = Workbooks.Open(wk1.Path & "/" & "FileDue.xls")
'metto i riferimenti ai fogli
Set sh1 = wk1.Worksheets("Foglio1")
Set sh2 = wk2.Worksheets("Foglio1")
With sh1
'copio i dati da un file all'altro
.Range("A1").Copy Destination:=sh2.Range("A1")
End With
'salvo le modifiche al file FileDue.xls
wk2.Save
'chiudo il file FileDue.xls
wk2.Close
Application.ScreenUpdating = True
'riga sempre eseguita
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set sh1 = Nothing
Set wk1 = Nothing
Set wk2 = Nothing
Exit Sub
'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub |
di patel data: 03/11/2015 09:50:42
senza allegati si capisce poco, i dati sensibili li puoi modificare, i numeri non sono sensibili
di PatMar (utente non iscritto) data: 03/11/2015 10:26:59
di PatMar (utente non iscritto) data: 03/11/2015 10:29:11
Spero di averli allegati correttamente
di patel data: 03/11/2015 11:48:35
tu hai detto
Vorrei che il foglio2 del primo file e il foglio1 del secondo file siano collegati, o meglio che automaticamente nel foglio2 del primo file siano copiati i dati del foglio1 del secondo file. anche se i file restano chiusi.
ma se sono chiusi ambedue come fai a lanciare una macro ? da dove la lanci ?
di PatMar (utente non iscritto) data: 03/11/2015 12:13:18
All'apertura del primo file, vorrei che i dati del file due siano copiati/incollati/collegati nel foglio2 del primo file.
Anche se il file 2 è soggetto a creazione/cancellazione e quindi a continua modifica.
Infatti non vorrei una macro da lanciare cliccando un bottone, ma un codice vba che copi e incolli i dati.
di patel data: 03/11/2015 14:57:09
continuo a non capire, magari qualcuno lo farà
di PatMar (utente non iscritto) data: 03/11/2015 15:21:13
Ho risolto in questo modo, un pò rozzamente ma funziona.
il file che deve effettuare la copia automatica ha formato .xlsm
Private Sub Workbook_Open()
Dim nome As String
Application.DisplayAlerts = False
Workbooks.Open ("P:percorso del file e nome file sorgente.xlsx")
Workbooks("nomefilesorgente.xlsx").Sheets("nomefoglio").Range("A1:H200").Copy _
Destination:=Workbooks("filedidestinazione.xlsm").Sheets("nomefoglio").Range("A1:H200")
ActiveWorkbook.Close
End Sub
|
di Albatros54 data: 03/11/2015 15:37:30
Prova il codice sotto, ora dovrebbe funzzionare
Ciao
Albatros54
Public Sub m()
'dichiaro le variabili
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'gestione errori
On Error GoTo RigaErrore
Application.ScreenUpdating = False
'metto i riferimenti ai files
Set wk1 = ThisWorkbook
Set wk2 = Workbooks.Open(wk1.Path & "/" & "elencodipendenti.xlsx")
'metto i riferimenti ai fogli
Set sh1 = wk1.Worksheets("QLF_Lista")
Set sh2 = wk2.Worksheets("QLF_Lista")
With sh1
'copio i dati da un file all'altro
.Range("a1").CurrentRegion.Copy Destination:=sh2.Range("A1")
End With
'salvo le modifiche al file FileDue.xls
wk2.Save
'chiudo il file FileDue.xls
wk2.Close
Application.ScreenUpdating = True
'riga sempre eseguita
RigaChiusura:
'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set sh1 = Nothing
Set wk1 = Nothing
Set wk2 = Nothing
Exit Sub
'in caso di errore
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub
|
Vuoi Approfondire?