copiare e incollare dati automaticamente



  • 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