Condividi:        

Importazione ricorrente di dati da altro file excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 20/05/14 11:54

Ciao,
io non utilizzo Office 2010 ma il 2003 e per le prove ho modificato il nome del file e poi non l'ho ripristinato, quindi nel codice precedente devi cambiare
Codice: Seleziona tutto
Windows("RICLASSIFICATI.xls").Activate ' <<===== QUI scrivi il nome del tuo file BASE di LAVORO


con
Codice: Seleziona tutto
Windows("RICLASSIFICATI.xlsm").Activate ' <<===== QUI scrivi il nome del tuo file BASE di LAVORO

per evitare l'Errore di run-time '9'


RICORDATI di impostare il formato alle colonne "C" e "A" del foglio "Pdc" in "TESTO" !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Sponsor
 

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 20/05/14 12:32

ricky53 ha scritto:Ciao,
io non utilizzo Office 2010 ma il 2003 e per le prove ho modificato il nome del file e poi non l'ho ripristinato, quindi nel codice precedente devi cambiare
Codice: Seleziona tutto
Windows("RICLASSIFICATI.xls").Activate ' <<===== QUI scrivi il nome del tuo file BASE di LAVORO


con
Codice: Seleziona tutto
Windows("RICLASSIFICATI.xlsm").Activate ' <<===== QUI scrivi il nome del tuo file BASE di LAVORO

per evitare l'Errore di run-time '9'


RICORDATI di impostare il formato alle colonne "C" e "A" del foglio "Pdc" in "TESTO" !!!


Come al solito sono qui a ringraziarti immensamente per l'assistenza che mi stai dando. Stasera non appena arrivo a casa provvedo a fare tutte le modifiche che mi ha postato. Mi sono dimenticato di chiederti di controllare se la sintassi del comando con cui rendo "libero" il percorso per l'archiviazione dei file, per permetterne l'utilizzo anche al "capo", è corretta. Ciò in quanto mi sono accorto che dopo il primo utilizzo non ha più funzionato. Procedendo tramite debug però non mi da' errore...
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 20/05/14 12:41

Ciao,
ti consiglio di rileggere tutto quanto è stato scritto dopo il tuo messaggio in cui riportavi l'errore di run-time '9'.

In merito a questo errore selezionando Debug ottieni l'istruzione (evidenziata in giallo) che ha generato l'errore).

Comunque ti ho già segnalato quale era l'errore e devi solo cancellare una chiamata ad una macro.

Attendiamo il risultato delle tue prove.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 20/05/14 14:14

ricky53 ha scritto:
ATTENZIONE: nel foglio "Db" in Key1 e Key2 hai diversi "#N/D" che sono stati causati dai conti mancanti nel foglio "Pdc" in colonna "A" !!!
Devi sistemare questa anomalia !!!


Ciao Ricky... sto guardando il file dal Tablet mentre sono in viaggio (tranquillo non guido io.... :D ), la macro che aggiorna i conti dovrebbe evitare, nei limiti del possibile di scrivere conti che sono già presenti o che in ogni caso scrivendoli sarebbero doppiati a prescindere se poi il centro di costo cui fanno riferimento è differente. Ad esempio come puoi vedere dall'immagine...

Immagine
hostare immagini

... il conto 981010 00115 Corrispettivi è presente svariate volte nel file CDC, la macro Aggiorna conti dovrebbe importarlo solo una volta. E' possibile che il risultato "#N/D" sia dovuto al fatto che io, in modo manuale, ho tolto tutti i conti doppi??
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 20/05/14 16:06

Ciao,
come già detto la questione della scrittura di conti già presenti dipende dal formato dei dati nei due file.
Nelle prove che ho fatto non si presenta questa anomalia ... comunque ricontrollo meglio e proprio su questo conto che hai segnalato.

la presenza degli #N/D dipende dal non trovare un certo conto, se tu hai cancellato dei doppi ma che doppi non erano allora ...
Controlla in una versione precedente del tuo file se il conto con #N/D c'era.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 21/05/14 00:22

Ciao,
prima leggi il mio precedente intervento in particolare la parte sui "#N/D".

Ho modificato il codice prova questa nuova versione (non è ottimizzata ed è anche un po' lenta ma non ha problemi con il formato dei conti)
Codice: Seleziona tutto
Option Explicit

Sub CERCA_e_SCRIVE_Nuovi_Conti_A()
    Dim SH1 As Worksheet, SH2 As Worksheet, mRng As Range, I As Long, J As Long, mConto As String, NuovoConto As Range
    Dim UR1 As Long, UR2 As Long, Trovato As String, Messaggio As String, Uguali As String
   
    Workbooks.Open Filename:=Trim(percorso) & "\Cdc.xls"
    Application.ScreenUpdating = False
    Windows("Cdc.xls").Activate ' <<===== QUI scrivi il nome del tuo file dal quale copiare i dati
    Set SH1 = Sheets("Cdc") ' <<===== QUI scrivi il nome del tuo foglio
    UR1 = SH1.Range("A" & Rows.Count).End(xlUp).Row
   
    Windows("RICLASSIFICATI.xlsm").Activate ' <<===== QUI scrivi il nome del tuo file BASE di LAVORO
    Set SH2 = Sheets("Pdc") ' <<===== QUI scrivi il nome del tuo foglio
    UR2 = SH2.Range("A" & Rows.Count).End(xlUp).Row
   
    If SH2.Range("G1") <> "ECOS-Conto" Then
        SH2.Range("G1") = "ECOS-Conto"
        For I = 2 To UR2
            SH2.Range("G" & I) = Format(SH2.Range("C" & I), "000000") & "-" & Format(SH2.Range("A" & I), "000000000000") ' <<===== MODIFICATA
        Next I
    End If
   
    Trovato = 0
    J = 2
    For I = 2 To UR1
        Uguali = "NO"
        For J = 2 To UR2
        mConto = Format(SH1.Cells(I, "F"), "000000") & "-" & Format(SH1.Cells(I, "D"), "000000000000") ' <<===== MODIFICATA
        If mConto = SH2.Range("G" & J) Then
            Uguali = "SI"
            Exit For
        End If
        Next J
        If Uguali = "NO" Then
            Trovato = Trovato + 1
            UR2 = UR2 + 1
            SH1.Range("D" & I & ":G" & I).Copy Destination:=SH2.Range("A" & UR2)
            SH2.Range("G" & UR2) = SH2.Range("C" & UR2) & "-" & SH2.Range("A" & UR2)
        End If
    Next I
   
    SH2.Range("G:G").ClearContents
    Application.ScreenUpdating = True

    Messaggio = "Elaborazione effettuata." & vbCrLf & vbCrLf
    If Trovato > 0 Then
        If Trovato > 1 Then
            Messaggio = Messaggio & "Inseriti:  " & Trovato & "  nuovi conti"
        Else
            Messaggio = Messaggio & "Inserito:  " & Trovato & "  nuovo conto"
        End If
    Else
        Messaggio = Messaggio & "Non è stato trovato alcun nuovo conto !!!"
    End If
    MsgBox Messaggio, vbInformation
   
    Set SH1 = Nothing
    Set SH2 = Nothing
    Set mRng = Nothing
    Set NuovoConto = Nothing
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 22/05/14 09:26

Buongiorno Ricky e anche a tutto il forum. Ho passato la giornatadi ieri a sistemare qua e là il codice. La parte che mi hai mandato per ultima funziona perfettamente. Non è particolamente lenta devo dire. Il problema degli #N/D l' ho quasi risolto del tutto. C'erano 2 centri di costo nuovi che al momento aggiungo manualmente (non è un problema se si tratta di 2) e in ogni caso il range di celle su cui effettuava il controllo per creare le due chiavi era ancora limitato alla prima versione (quando c'erano pochi conti, quelli riferiti soltanto ai negozi). Quindi per quanto rigurada la macro aggancia cdc ho portato il range a 500 righe e per aggancia cod l'ho portato a 1000 righe. Adesso praticamente funziona quasi tutto tranne per il fatto che alla fine del foglio db mi restano due righe con esito #Rif! nelle colonne Key1 e Key2 e #N/D nelle colonne J , K , L .
Comunque a parte questo inconveniente sembra funzionare il codice.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 09:28

Ciao,
invia la tua ultima versione del file e provo ad eliminare questa anomalia.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 22/05/14 09:48

ricky53 ha scritto:Ciao,
invia la tua ultima versione del file e provo ad eliminare questa anomalia.


Ok Ricky. Dopo di chè mi dici qualche bravo marmista a Roma che ti faccio confezionare una statua davanti il colosseo come 9° Re di Roma... (l'8° dicono che è Totti...) :lol:
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 22/05/14 10:30

ricky53 ha scritto:Ciao,
invia la tua ultima versione del file e provo ad eliminare questa anomalia.


Ecco il link per il file... è uno zip (Riclassificati e Cdc).
C'è un conto, nella fattispecie il 601057000010 alla riga 468 del file CDC che non si copia
con l'aggiornamento conti e non riesco a capire il perchè... questo è l'unico #N/D che mi ritrovo
nella colonna Key1 e Key2 del foglio db.

https://www.dropbox.com/s/nm60isex5k5ppbm/Ultimo.zip
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 12:19

Ciao,
scarico, controllo e ti faccio sapere ... sempre se trovo il motivo ... spero di riuscirci !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 13:42

Ciao,
ti sei mangiato un "+ 1" in
Codice: Seleziona tutto
            If Uguali = "NO" Then
                Trovato = Trovato + 1
                UR2 = UR2  ' <<===== Manca "+ 1"
                SH1.Range("D" & I & ":G" & I).Copy Destination:=SH2.Range("A" & UR2)
                SH2.Range("G" & UR2) = SH2.Range("C" & UR2) & "-" & SH2.Range("A" & UR2)
            End If



aggiungilo
Codice: Seleziona tutto
UR2 = UR2 + 1
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 14:49

Ciao,
e con questo abbiamo risolto anche il problema del "#RIF!" che era causato da questa istruzione
Codice: Seleziona tutto
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
in particolare il parametro "xlLastCell"


Sostituisci le tue tre macro con le seguenti
Codice: Seleziona tutto
Sub Aggancia_cod()
'
' Aggancia_cod Macro
'
' Scelta rapida da tastiera: CTRL+b
'
    Dim UR As Long
    ActiveSheet.Next.Select
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "Cod"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],Pdc!R2C1:R1000C6,6,FALSE)"
    Range("J2").Select
    Selection.Copy
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("J3:J" & UR).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("J1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("K:K").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
    Range("A1").Select
    ActiveSheet.Previous.Select
End Sub


Codice: Seleziona tutto
Sub Aggancia_Neg_cod()
'
' Aggancia_Neg_cod Macro
'
' Scelta rapida da tastiera: CTRL+c
'
    Dim UR As Long
    ActiveSheet.Next.Select
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Key1"
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-8],8,4)&""-""&RC[-1]"
    Range("K2").Select
    Selection.Copy
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("K3:K" & UR).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("K2:K" & UR).Select
    Selection.Copy
    Range("K3:K" & UR).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
    ActiveSheet.Previous.Select
End Sub


Codice: Seleziona tutto
Sub Aggancia_Neg_Cod_Rep()
'
' Aggancia_Neg_Cod_Rep Macro
'
' Scelta rapida da tastiera: CTRL+d
'
    Dim UR As Long
    ActiveSheet.Next.Select
    Range("L1").Select
    ActiveCell.FormulaR1C1 = "Key2"
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-9],5,7)&""-""&RC[-2]"
    Range("L3").Select
    Columns("L:L").EntireColumn.AutoFit
    Range("L2").Select
    Selection.Copy
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("L3:L" & UR).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("L:L").EntireColumn.AutoFit
    Range("L1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
    ActiveSheet.Previous.Select
End Sub
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 15:10

Ciao,
ho scritto male un intervallo, ecco la versione modificata
Codice: Seleziona tutto
Sub Aggancia_Neg_cod()
'
' Aggancia_Neg_cod Macro
'
' Scelta rapida da tastiera: CTRL+c
'
    Dim UR As Long
    ActiveSheet.Next.Select
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Key1"
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-8],8,4)&""-""&RC[-1]"
    Range("K2").Select
    Selection.Copy
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("K3:K" & UR).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("K2:K" & UR).Select
    Selection.Copy
    Range("K2:K" & UR).Select ' <<===== MODIFICATA
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
    ActiveSheet.Previous.Select
End Sub


ATTENZIONE: leggi i miei precedenti interventi a partire da quello delle 13:42 del 22-05-2014
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 22/05/14 16:01

ricky53 ha scritto:Ciao,
e con questo abbiamo risolto anche il problema del "#RIF!" che era causato da questa istruzione
Codice: Seleziona tutto
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
in particolare il parametro "xlLastCell"


Ciao Ricky, ma questa istruzione già c'era.

Codice: Seleziona tutto
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
    Workbooks.Open Filename:=Trim(percorso) & "\Cdc.xls"
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    Windows("RICLASSIFICATI.xlsm").Activate
    ActiveSheet.Next.Select


Devo inserirla da qualche altra parte??

Riguardo i tre codici che ho sostituito ai precedenti questo è l'esito...

Immagine

Immagine

Immagine


image hosting

Per vederle nella loro interezza dovresti aprire il link...
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 22/05/14 23:38

Ciao,
avresti dovuto leggere (e te lo avevo scritto) bene tutti i miei interventi.
RILEGGILI con MAGGIORE ATTENZIONE !!!


La sostanza di tutto è è la seguente: sostituisci le ture tre macro con quelle che ti ho inviato il 22-05-2014 alle 14:49 ed il successivo alle 15.10.
La colpa degli errori era dovuta ad una istruzione impostata male che portava ad errori ed è la seguente:
Codice: Seleziona tutto
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Nelle tre macro l'ho tolta e l'ho sostituita con un'altra che non genera errori.

Con la sostituzione delle tre macro risolverai tutti i problemi legati ai "#RIF!" e alla tua richiesta "Si può evitare?"


Per gli "#N/D" sono dati mancanti che le tue funzioni "CERCA.VERT" non trovano.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 23/05/14 05:49

ricky53 ha scritto:Ciao,
avresti dovuto leggere (e te lo avevo scritto) bene tutti i miei interventi.
RILEGGILI con MAGGIORE ATTENZIONE !!!


La sostanza di tutto è è la seguente: sostituisci le ture tre macro con quelle che ti ho inviato il 22-05-2014 alle 14:49 ed il successivo alle 15.10.
La colpa degli errori era dovuta ad una istruzione impostata male che portava ad errori ed è la seguente:
Codice: Seleziona tutto
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Nelle tre macro l'ho tolta e l'ho sostituita con un'altra che non genera errori.

Con la sostituzione delle tre macro risolverai tutti i problemi legati ai "#RIF!" e alla tua richiesta "Si può evitare?"



Buongiorno Ricky, scusami se ti faccio fare gli straordinari... I tuoi interventi li avevo letti e ieri sera li ho riletti almeno 3/4 volte per capire cosa avevo sbagliato... ma a quanto pare non avevo sbagliato niente. L'istruzione cui tu fai riferimento e che hai tolto dalle tre macro (che io ho sostituito così come mi hai indicato) è presente anche nella macro 'Importa dati' e di cui tu negli interventi non tratti. Ecco perché ieri ti ho postato quelle immagini con quelle domande :-?
Quindi, tale istruzione va tolta anche da questa macro??
Per gli #N/D sono d'accordo con te, si tratta realmente di dati mancanti, quello che volevo capire è se la mancanza di un dato in una riga deve generare errore solo in quella riga oppure anche nella successiva.
Comunque inserendo il centro di costo mancante ho visto che si risolve tutto.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 23/05/14 09:48

Ciao,
eseguendo le due macro "Aggiorna_DATI" e "Aggiorna_dati2" non ho notato comportamenti strani causato dall'istruzione
Codice: Seleziona tutto
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
quindi non modificherei il codice ... anche se come detto all'inizio il tuo codice andrebbe riorganizzato.

Adesso la solita classica domanda: ne vale la pena ??? Costi /Benefici !!!

Per me "SI" e se sei in grado di fare le necessarie modifiche per eliminare istruzioni non proprio corrette te lo consiglio.

Sicuramente eliminerei
Codice: Seleziona tutto
ActiveSheet.Next.Select
e
Codice: Seleziona tutto
ActiveSheet.Previous.Select
sostituendoli con i nomi dei fogli da attivare o meglio farei riferimento ai fogli sui quali lavorare

Eliminerei anche tutte le istruzioni di select

Più tardi ti invio la macro "Import" alla quale applicherò quanto scritto sopra.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi ricky53 » 23/05/14 13:36

Ciao,
come promesso ho riorganizzato/ottimizzato la macro "Import":
Codice: Seleziona tutto
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
    Dim Percorso As String, Nome As String, UR As Long
    Dim SH_In As Worksheet, SH_Out As Worksheet, WB_Out As Workbook, Rng_In As Range
   
    Set SH_In = Sheets("Editor")
    Set SH_Out = Sheets("Db")
    Set WB_Out = ActiveWorkbook
   
    Application.ScreenUpdating = False
    SH_Out.Cells.ClearContents
    Percorso = ActiveWorkbook.Path
    Nome = "Cdc.xls"
    On Error GoTo Errore
    Workbooks.Open Filename:=Percorso & "\" & Nome
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Set Rng_In = Range("A1:I" & UR)
    WB_Out.Activate
    Rng_In.Copy Destination:=SH_Out.Range("A1")
    SH_Out.Cells.EntireColumn.AutoFit
    SH_Out.Select
    SH_Out.Range("A1").Select
    SH_In.Select
   
    Application.DisplayAlerts = False
    Windows("Cdc.xls").Close SaveChanges:=False
    Application.DisplayAlerts = True
   
    MsgBox "Import di   '" & UR - 1 & "'   dati correttamente effettuato", vbInformation ' <<===== Se vuoi puoi togliere questa istruzione
   
Fine:
    Application.ScreenUpdating = True
    Set SH_In = Nothing
    Set SH_Out = Nothing
    Set WB_Out = Nothing
    Set Rng_In = Nothing
    Exit Sub

'...............................................................
Errore:
    MsgBox "errore:  '" & Err & "'" & vbCrLf & Err.Description
    GoTo Fine:
End Sub


Provala e ... sono QUI per i chiarimenti !


Questa macro va utilizzata come base per modificare/ottimizzare tutte le altre tue macro.

Va applicata la stessa logica e lo stesso modo di impostare le istruzioni a tutto il codice che scriverai da adesso in poi !


Ovviamente si può fare ancora di meglio (tanti altri utenti potranno aiutarti a inserire dei miglioramenti sia sulle istruzioni che sui consumi di memoia e sulle prestazioni) ma ... adesso secondo me NON ne vale la pena
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importazione ricorrente di dati da altro file excel

Postdi fastbike73 » 26/05/14 08:26

ricky53 ha scritto:Ciao,
come promesso ho riorganizzato/ottimizzato la macro "Import":
Codice: Seleziona tutto
Sub Import()
'
' Import Macro
'
' Scelta rapida da tastiera: CTRL+i
'
    Dim Percorso As String, Nome As String, UR As Long
    Dim SH_In As Worksheet, SH_Out As Worksheet, WB_Out As Workbook, Rng_In As Range
   
    Set SH_In = Sheets("Editor")
    Set SH_Out = Sheets("Db")
    Set WB_Out = ActiveWorkbook
   
    Application.ScreenUpdating = False
    SH_Out.Cells.ClearContents
    Percorso = ActiveWorkbook.Path
    Nome = "Cdc.xls"
    On Error GoTo Errore
    Workbooks.Open Filename:=Percorso & "\" & Nome
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Set Rng_In = Range("A1:I" & UR)
    WB_Out.Activate
    Rng_In.Copy Destination:=SH_Out.Range("A1")
    SH_Out.Cells.EntireColumn.AutoFit
    SH_Out.Select
    SH_Out.Range("A1").Select
    SH_In.Select
   
    Application.DisplayAlerts = False
    Windows("Cdc.xls").Close SaveChanges:=False
    Application.DisplayAlerts = True
   
    MsgBox "Import di   '" & UR - 1 & "'   dati correttamente effettuato", vbInformation ' <<===== Se vuoi puoi togliere questa istruzione
   
Fine:
    Application.ScreenUpdating = True
    Set SH_In = Nothing
    Set SH_Out = Nothing
    Set WB_Out = Nothing
    Set Rng_In = Nothing
    Exit Sub

'...............................................................
Errore:
    MsgBox "errore:  '" & Err & "'" & vbCrLf & Err.Description
    GoTo Fine:
End Sub


Provala e ... sono QUI per i chiarimenti !


Questa macro va utilizzata come base per modificare/ottimizzare tutte le altre tue macro.

Va applicata la stessa logica e lo stesso modo di impostare le istruzioni a tutto il codice che scriverai da adesso in poi !


Ovviamente si può fare ancora di meglio (tanti altri utenti potranno aiutarti a inserire dei miglioramenti sia sulle istruzioni che sui consumi di memoia e sulle prestazioni) ma ... adesso secondo me NON ne vale la pena


Buongiorno Ricky e buon inizio di settimana,
ti invio in allegato l'ultima versione del file. Premetto che non riporta ancora la modifica alla macro Import che mi hai inviato perchè sono stato costretto a concentrarmi lì dove c'erano problemi con l'esito delle successive macro. Problemi, comunque, che sono riuscito a risolvere. Adesso considerato le modifiche apportate da me il codice della macro Import da te aggiornato deve essere nuovamente ritoccato?
Questo è il link del file... guardalo perchè poi ti devo fare delle domande... Grazie sempre!!!!!

https://www.dropbox.com/s/tjmwerofnposjzh/Riclassificati.zip
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Importazione ricorrente di dati da altro file excel":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti