Moderatori: Anthony47, Flash30005
Private Sub Workbook_Open()
Dim SecFile As String, SecPath As String
'
SecPath = "C:\UTENTE\PERCORSO\" '<<< Il tuo PATH del secondo foglio, con "\" finale
SecFile = "MATTEW_secondo_B61126.xlsx" '<<< Il Nome del file
Application.EnableEvents = False
On Error Resume Next
Workbooks.Open SecPath & SecFile
On Error GoTo 0
Application.EnableEvents = True
ThisWorkbook.Activate
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SecWs As Worksheet, wArr, lB0 As Long, cCell As Range, tRow As Long
Dim eCCo As Boolean, mapOrig, mapDest
'colonne A+D+L nel file di origine con le colonne D+A+E del file di destinazione
'
If Target.Rows.Count > 1 Then Exit Sub
tRow = Target.Row: eCCo = False
Set SecWs = Workbooks("MATTEW_secondo_B61126.xlsx").Sheets(1) '<<< Nome del secondo file
wArr = SecWs.UsedRange.Value
lB0 = LBound(wArr)
'For Each cCell In Target.Cells(1, 1)
For i = lB0 To UBound(wArr, 1)
If wArr(i, lB0 + 3) = Cells(tRow, "A") And _
wArr(i, lB0) = Cells(tRow, "D") And _
wArr(i, lB0 + 4) = Cells(tRow, "L") Then eCCo = True
If eCCo Then
mapOrig = Array("B", "C") '<<< Queste Colonne del file di origine...
mapDest = Array("B", "C") '<<< ...vanno su queste colonne di SecondoFile
For j = LBound(mapOrig) To UBound(mapOrig)
SecWs.Cells(i + 1 - lB0, mapDest(j)).Value = Cells(tRow, mapOrig(j)).Value
Next j
Exit For
End If
Next i
'Next cCell
End Sub
La macro funziona benissimo.. L'ho modificata un po' per evitare che vada in run time se il file di destinazione è già aperto, copiando i valori prima in un nuovo workbook e poi da lì una macro che lancio solo io da locale che mi copia i nuovi record dal nuovo workbook nel file di destinazione e poi li elimina in modo da non ricopiare record già presenti. Ora però vorrei aggiungere un pezzo:
Vorrei che se vengono modificati dei record nel file di origine questi venissero copiati nel nuovo workbook e poi sostituiti nel file di destinazione quando effettuo la copia con la macro. La chiave univoca per riconoscere i record è la combinazione delle colonne A+D+L nel file di origine con le colonne D+A+E del file di destinazione.
Spero di essermi spiegato
Non l'ho ancora provata però a primo acchitto mi viene da dire che la routine all'apertura della cartella di lavoro va in conflitto con quella di origine. Sarebbe più corretto che la macro copi tutto il nuovo record modificato oltre a quelli nuovi, quando il file viene salvato( come già fa ora in caso di inserimento di un nuovo record).
Torna a Applicazioni Office Windows
Riempi Modulo da DB e salva un file per Record Autore: Ross72 |
Forum: Applicazioni Office Windows Risposte: 4 |
Visual Studio 2019 VB.Net. conoscere i record inseriti Autore: pacifico |
Forum: Programmazione Risposte: 0 |
Visitano il forum: Nessuno e 10 ospiti