Moderatori: Anthony47, Flash30005
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Foglio2.Cells(Rows.Count, 1).End(xlUp).Row > Foglio1.Range("A1") Then
Call UpDt
End If
End Sub
Private Sub Workbook_Open()
Foglio1.Range("A1") = Foglio2.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Sub UpDt()
Dim sSRc, dDst, I As Long, DstWb As String
Dim SrcSh As Worksheet, myNext As Long
'Exit Sub '!!! Vedi Testo
sSRc = Array("A", "D", "E") 'completare '<<< L'intero elenco di colonne da copiare
dDst = Array("D", "A", "B") 'completare '<<< L'intero elenco di colonne dove incollare
DstWb = "C:\percorso\nomefile.xls" '<<< L'esatto percorso e nome del file da aggiornare
Workbooks.Open DstWb
Sheets("NomeSheet").Select '<<< Il nome del foglio del file da aggiornare
myNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
With ThisWorkbook
For I = .Foglio1!Range("A1") + 1 To .Foglio2.Cells(Rows.Count, 1).End(xlUp).Row
For j = LBound(sSRc) To UBound(sSRc)
Cells(myNext, dDst(j)).Value = .Foglio2.Cells(I, sSRc(j)).Value
myNext = myNext + 1
Next j
Next I
End With
Stop '*** VEDI TESTO
ActiveWorkbook.Close True
ThisWorkbook.Foglio1.Range("A1") = ThisWorkbook.Foglio2.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
For I = .Foglio1!Range("IV1") + 1 To .Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Foglio1.Cells(Rows.Count, 1).End(xlUp).Row > Foglio2.Range("A1") Then
Call UpDt
End If
End Sub
Private Sub Workbook_Open()
Foglio2.Range("A1") = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Sub UpDt()
Dim sSRc, dDst, I As Long, DstWb As String
Dim SrcSh As Worksheet, myNext As Long, iMin As Long, iMax As Long
'Exit Sub '!!! Vedi Testo
sSRc = Array("A", "D", "E") 'completare '<<< L'intero elenco di colonne da copiare
dDst = Array("D", "A", "B") 'completare '<<< L'intero elenco di colonne dove incollare
DstWb = "C:\PERCORSO\byMATTEW88-Beta-Dest_STORICO_B61115.xls" '<<< L'esatto percorso e nome del file da aggiornare
iMin = Foglio2.Range("A1").Value + 1
iMax = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
Workbooks.Open DstWb
Sheets("Prodotti").Select '<<< Il nome del foglio del file da aggiornare
myNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
For I = iMin To iMax
For j = LBound(sSRc) To UBound(sSRc)
Cells(myNext, dDst(j)).Value = Foglio1.Cells(I, sSRc(j)).Value
Next j
myNext = myNext + 1
Next I
Stop '*** VEDI TESTO
ActiveWorkbook.Close True
Foglio2.Range("A1") = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
End Sub
iMax = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
'Controlli AGGIUNTI:
fstat = FileStatus(DstWb)
If fstat <> 0 Then
MsgBox ("Errore " & Err.Description & vbCrLf & "Operazion abortita")
Exit Sub
End If
'Fine aggiunte
Workbooks.Open DstWb
For j = LBound(sSRc) To UBound(sSRc)
' Cells(myNext, dDst(j)).Value = Foglio1.Cells(I, sSRc(j)).Value '---TOGLI
Foglio1.Cells(I, sSRc(j)).Copy Cells(myNext, dDst(j)) '+++METTI
Next j
In confidenza, i giochi a tre non mi sono mai piaciuti...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
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 32 ospiti