Doppio passaggio file differenti

di il
2 risposte

Doppio passaggio file differenti

Buongiorno,
il mio problema è il seguente, ho un file excel denominato "TIMELINE" dove creo una programmazione segnando delle date di scadenza. Ho creato un codice che quando chiudo il file cliccando sulla "X" in alto a destra, trasferisce il contenuto di alcune celle di questo file su un'altro file chiamato "LAVORI" (ho utilizzato SUB AUTO_CLOSE()), questo funziona senza problemi.
Oggi ho aggiunto un passaggio; ho un terzo file il quale, mi copia dei dati nel file "TIMELINE", poi quando lo vado a chiudere salvando ( wk4.Close SaveChanges:=True, wk4 è il mio Workbook) questo non trasferisce i dati al file "LAVORI" così come invece fa cliccando sulla "X".

Qualcuno sa dirmi dove sbaglio?
Se serve allego codici.

Intanto grazie a tutti e buon lavoro.

2 Risposte

  • Re: Doppio passaggio file differenti

    Ciao
    Penso sia opportuno allegare il codice (intero) della macro incriminata.
    Ciao,
    Mario
  • Re: Doppio passaggio file differenti

    Ciao Mario, grazie per l'interessamento.
    Allego i codici, non nella totalità altrimenti risulterebbero troppo lunghi, ho tolto le righe di trasferimento dati o passi puramente meccanici.
    il primo codice da timeline a Lavori è:

    Sub Auto_close()

    'dichiaro le variabili
    Dim wk1, wk2 As Workbook
    Dim sh1, sh2 As Worksheet
    Dim UltimaRigaTimeLine As Integer
    Dim UltimaRigaLista As Integer
    Dim t_TimeLine, t_Lista As Integer
    Dim Code_TL, Code_Lista, pth_save, File_Save As String
    Dim i As Date

    'gestione errori
    On Error GoTo RigaErrore
    Application.ScreenUpdating = False
    'metto i riferimenti ai files
    Set wk1 = ThisWorkbook
    Set wk2 = Workbooks.Open("\\................\Lavori.xlsx")
    'metto i riferimenti ai fogli
    Set sh1 = wk1.Worksheets("Dati")
    Set sh2 = wk2.Worksheets("Sheet1")
    UltimaRigaLista = sh2.Range("D5").End(xlDown).Row
    UltimaRigaTimeLine = sh1.Range("B100").End(xlUp).Row
    Code_TL = Left(sh1.Cells(3, 2), 4)
    With sh2
    ……………………………………………(codice tolto)
    End With

    'chiudo il file lavori salvando
    wk2.Close SaveChanges:=True
    ‘salvo il file timeline nella destinazione corretta
    pth_save = "\\..................\Extra\"
    File_Save = Left(sh1.Cells(3, 2).Value, 4) & "-TimeLineClient.xlsm"
    ‘ se la destinazione contiene già il file sovrascrive altrimenti lo crea
    If Dir(pth_save & File_Save) <> vbNullString Then
    wk1.Close SaveChanges:=True
    Else
    wk1.SaveAs Filename:=pth_save & File_Save, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    On Error Resume Next
    wk1.Close SaveChanges:=False
    End If

    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

    Il codice invece che dovrebbe copiarmi i dati sul cambiamento di un set di celle nel file "Timeline" e che poi speravo aggiornasse il file "Lavori" con il codice qui sopra è:

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim KeyCells As Range
    Dim wk1, wk4 As Workbook
    Dim sh1, sh4 As Worksheet


    Application.ScreenUpdating = False

    Set KeyCells = Range("D5:D40")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
    Is Nothing Then

    Set wk1 = ThisWorkbook
    Set sh1 = wk1.Worksheets("Ass_lavori_tecnici")
    Set wk4 = Workbooks.Open("\\.......\"-TimeLineClient.xlsm")
    Set sh4 = wk4.Worksheets("TimeLine")
    sh4.Cells(20, 5).Value = sh1.Cells(Target.Row, 4).Value

    wk4.Close SaveChanges:=True

    End If

    Application.ScreenUpdating = True

    End Sub

    Secondo me dipende dal metodo che uso per la chiusura del file ma non riesco a trovare la soluzione.
    Mi scuso anche per i codici che magari non sono così professionali.

    Grazie ancora ed attendo gradito riscontro.
    Sandro
Devi accedere o registrarti per scrivere nel forum
2 risposte