Condividi:        

[Excel] Copiare riga in un DB

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

[Excel] Copiare riga in un DB

Postdi Lele2774 » 11/10/12 20:54

ciao a tutti

ho un'altra richiesta e spero che, con il vostro preziosissimo aiuto, di riuscire a crearmi sta macro che per me sarebbe veramente fondamentale.
vado ad esporvi il "caso".

Ho 2 file di excel ==> xls1 e xls2.
entrambi sono dotati di un unico sheet.
per semplicità:
xls1 ==> foglio1
xls2 ==> foglio2

nel foglio 1, nella riga 1, vi è un record di valori, del tipo "134,a,b,c" (che pertanto impegna le colonne dalla A alla D).

nel foglio 2, invece ci sono 133 record, che occupano le prime 133 righe del foglio (oltre che le colonne dalla A alla D).
esempio:
1, a, b, c
2, a, b, c
fino a
133, a, b, c

(come vedete, la prima colonna, riporta valori crescenti)

ora, io vi chiedo se è possibile creare una macro che incolli come valore il record nel foglio 1, nella corretta posizione nel foglio 2.

pertanto, se vi è 134, a, b, c...lo copierà come ultima colonna di questo DB,

1, a, b, c
2, a, b, c
133, a, b, c
134, a, b, c

se invece è per esempio 98, a ,b, c...lo copierà nella 98esima riga (sostituendo il precedente record)

spero che possiate aiutarmi.
GRAZIE MILLE!!!!
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Sponsor
 

Re: [Excel] Copiare riga in un DB

Postdi wallace&gromit » 11/10/12 21:19

ciao lele,
prova questa macro:
Codice: Seleziona tutto
Sub copia()
Workbooks("xls1.xls").Activate
rigaDest = Sheets("Foglio1").Range("A1").Value
Sheets("Foglio1").Range("A1:D1").Copy Destination:=Workbooks("xls2.xls").Sheets("Foglio2").Range("A" & rigaDest)
End Sub
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 11/10/12 21:23

provo immediatamente e poi...ti faccio sapere

grazie!!!!
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 11/10/12 21:33

niente.
mi esce fuori sto warnig:
----------------------------------------
errore di run-time '9':
indice non incluso nell'intervallo

debug
--------------------------------------

apro l'editor e mi evidenzia in giallo la seconda riga della macro (Workbooks("xls1.xls").Activate)
---------------------------------------
Sub copia()
Workbooks("xls1.xls").Activate
rigaDest = Sheets("Foglio1").Range("A1").Value
Sheets("Foglio1").Range("A1:D1").Copy Destination:=Workbooks("xls2.xls").Sheets("Foglio2").Range("A" & rigaDest)
End Sub
-----------------------------------------

perchè?!?!?!?
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Anthony47 » 11/10/12 23:36

Scusa, ma tu un file che si chiama xls1.xls ce l' hai? Forse, insomma, devi fare qualche adattamento...
(se invece di parlare genericamente di xls1 e xls2 avessi dato direttamente i nomi veri dei file e dei fogli forse non saresti a questo punto)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 12/10/12 14:27

Anthony
hai ragione

allora.....il file origine si chiama "AIR" ed il foglio relativo si chiama "AIR_1"
il file dove incollare il record si chiama "Quot" e il file associato si chiama "Quot_1"

comunque, quando io faccio partire la macro, il file "Quot" è chiuso (non so se è una informazione necessaria/utile)
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi wallace&gromit » 12/10/12 16:13

È importante eccome, ecco il codice:
Codice: Seleziona tutto
Sub copia()
Indir = ThisWorkbook.Path
Workbooks.Open Filename:=Indir & "\Quot.xls"
Workbooks("AIR.xls").Activate
rigaDest = Sheets("AIR_1").Range("A1").Value
Sheets("AIR_1").Range("A1:D1").Copy Destination:=Workbooks("Quot.xls").Sheets("Quot_1").Range("A" & rigaDest)
'Workbooks("Quot.xls").Save
'Workbooks("Quot.xls").Activate
'Workbooks("Quot.xls").Close
End Sub
alla fine scegli cosa deve fare con Quot (salvare i dati, attivarlo o chiuderlo)
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 13/10/12 20:55

ciao W&G

ho provato la tua macro.
mi si ferma alla seconda istruzione (Indir = ThisWorkbook.Path)

puoi cortesemente spiegarmi questa riga?
risolto questo...dovrebbe essere risolto il problema
grazie
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi ricky53 » 13/10/12 21:06

Ciao,
quale errore ti viene segnalato?


L'istruzione che hai segnalato imposta la variabile "Indir" con il percorso in cui si trova il file dal quale stai eseguendo la macro.
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: [Excel] Copiare riga in un DB

Postdi Flash30005 » 14/10/12 02:59

Quell'errore avviene quando si sta lavorando su un file non salvato
ad esempio un nuovo file (cartel1) con all'interno la macro e si avvia la macro senza aver salvato il fle sul disco

ciao

EDIT ore 14:40 - Se la cartella non è salvata il percorso è nullo e dovrebbe andare in debug alla riga successiva con "errore_di runtime 1004"
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 14/10/12 15:38

"errore di run-time '1004':

impossibile trovare 'C:\Users\damilele\Desktop\prova\QUOT.xls'.
Controllare l'ortografia del nome del file e verificare che la posizione del file sia corretta.

Se si sta tentando di aprire il fule dall'elenco dei file più recenti, assicurarsi che il file non sia stato rinominato, spostato o eliminato."
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 14/10/12 15:42

Sub copia()
Indir = ThisWorkbook.Path
Workbooks.Open Filename:=Indir & "\QUOT.xls"
Workbooks("AIR.xls").Activate
rigaDest = Sheets("AIR_1").Range("A1").Value
Sheets("AIR_1").Range("A1:D1").Copy Destination:=Workbooks("QUOT.xls").Sheets("Quot_1").Range("A" & rigaDest)
'Workbooks("QUOT.xls").Save
'Workbooks("QUOT.xls").Activate
'Workbooks("QUOT.xls").Close
End Sub

----
ho controllato i nomi dei file e dei fogli e corrispondono.
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Anthony47 » 14/10/12 19:12

Si presuppone che la macro sia stata inserita in un modulo vba del file AIR.xls, e che nella stessa directory dove e' presente AIR.xls esista un file chiamato esattamente QUOT.xls
Da quello che scrivi il file dovrebbe essere in C:\Users\damilele\Desktop\prova\

Il messaggio di errore dice che quel file in quella directory non c' e'; in prima battuta devo credere alla macro, per cui ti chiedo di descrivere con quale processo hai "controllato i nomi dei file [...] e corrispondono".

Mi pare che hai Win 7, quindi il mio suggerimento e' che:
-premi sul bottone Start
-digiti "QUOT.xls" per cominciare una ricerca
-ti dovrebbe visualizzare i files che comprendono quella stringa; seleziona QUOT.xls, tasto dx, scegli Apri percorso file; verifica che il percorso sia esattamente quello che il vba indica come percorso che non viene trovato.

Potresti avere piu' di un QUOT.xls, in piu' directories; in questo caso controlla che uno di questi sia presente nella directory indicata dal messaggio del vba.

Ti chiederei di essere generoso nelle informazioni che fornisci, ma anche preciso; ad esempio immagino che il messaggio di ieri sera "mi si ferma alla seconda istruzione (Indir = ThisWorkbook.Path)" sia sbagliato; come pure e' sbagliato rispondere che il messaggio di errore e' "errore di run-time '1004': etc etc " senza precisare a quale riga di codice: personalmente a lavorare su informazioni sbagliate mi sembra di sciupare il mio tempo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 14/10/12 19:37

Si presuppone che la macro sia stata inserita in un modulo vba del file AIR.xls, e che nella stessa directory dove e' presente AIR.xls esista un file chiamato esattamente QUOT.xls
Da quello che scrivi il file dovrebbe essere in C:\Users\damilele\Desktop\prova\

esatto

Il messaggio di errore dice che quel file in quella directory non c' e'; in prima battuta devo credere alla macro, per cui ti chiedo di descrivere con quale processo hai "controllato i nomi dei file [...] e corrispondono".

ho verificato che i nomi dei file e dei fogli fossero esattamente quelli riportati nel corpo della macro

Mi pare che hai Win 7, quindi il mio suggerimento e' che:
-premi sul bottone Start
-digiti "QUOT.xls" per cominciare una ricerca
-ti dovrebbe visualizzare i files che comprendono quella stringa; seleziona QUOT.xls, tasto dx, scegli Apri percorso file; verifica che il percorso sia esattamente quello che il vba indica come percorso che non viene trovato.

fatto. e conferma che il path è quello indicato

Potresti avere piu' di un QUOT.xls, in piu' directories; in questo caso controlla che uno di questi sia presente nella directory indicata dal messaggio del vba.

esiste solo quello nella Directory "prova". nessun altro

Ti chiederei di essere generoso nelle informazioni che fornisci, ma anche preciso; ad esempio immagino che il messaggio di ieri sera "mi si ferma alla seconda istruzione (Indir = ThisWorkbook.Path)" sia sbagliato; come pure e' sbagliato rispondere che il messaggio di errore e' "errore di run-time '1004': etc etc " senza precisare a quale riga di codice: personalmente a lavorare su informazioni sbagliate mi sembra di sciupare il mio tempo.



facendo rigirare la macro, mi esce il seguente messaggio:
Errore di run-time '1004':
Impossibile trovare 'C:\Users\damilele\Desktop\prova\QUOT.xls'.
Controllare l'ortografia del nome del file e verificare che la posizione del file sia corretta.

Se si sta tentando di aprire il file dall'elenco dei file più recenti, assicurarsi che il file non sia stato rinominato, spostato o eliminato.


selezionando poi l'opzione per il debug, mi mostra la macro:

Sub copia()
Indir = ThisWorkbook.Path
Workbooks.Open Filename:=Indir & "\QUOT.xls"
Workbooks("AIR.xls").Activate
rigaDest = Sheets("AIR_1").Range("A1").Value
Sheets("AIR_1").Range("A1:D1").Copy Destination:=Workbooks("QUOT.xls").Sheets("Quot_1").Range("A" & rigaDest)
'Workbooks("QUOT.xls").Save
'Workbooks("QUOT.xls").Activate
'Workbooks("QUOT.xls").Close
End Sub

con la terza istruzione (ovvero, Workbooks.Open Filename:=Indir & "\QUOT.xls") evidenziata in giallo.

io cerco di essere più generoso possibile di informazioni, non solo perchè è chiaramente mio interesse cercare di venire a capo prima possibile di questa problematica, ma anche perchè, mi dispiace moltissimo approfittare della vostra "disponibilità" facendovi perdere tempo.
grazie ancora
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Flash30005 » 14/10/12 22:11

Prova a spostare o a copiare la cartella prova e inseriscila nella root di c:\
alla fine dovrai avere C:\Prova\
con all'interno sia il file Quot.xls
sia il file Air.xls

Ora da esplora risorse vai nella cartella copiata
C:\prova\ e avvia il file Air.xls
e la macro contenuta

fai sapere

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] Copiare riga in un DB

Postdi Anthony47 » 15/10/12 00:51

Io avrei suggerito:
-Esegui Command.com (premi Start, digita "cmd", ti dovrebbe presentare tra i risultati CMD.EXE: cliccalo per aprire una sessione Dos)
-esegui il comando CD C:\Users\damilele\Desktop\prova (per chi non c' era, cd sta' per change directory)
-dovresti vedere nel prompt del comando la nuova directory in cui sei posizionato (cioe C:\Users\damilele\Desktop\prova); se hai difficolta' fai un CD alla volta (cd c.\users, poi cd damilele, etc)
-lancia il comando ATTRIB *.* /S >PIPPOPO.TXT
-ti dovrebbe creare nella directory un file pippopo.txt con l' elenco dei file excel rilevati: apri il file con Notepad, copia TUTTO il contenuto e incollalo nel tuo prossimo messaggio; se ci sono dati che vuoi mascherare sostituisci ogni singolo carattere della parola che vuoi mascherare con #

Vorrei inoltre vedere lo screenshot dell' errore che compare; per come fare guarda qui: viewtopic.php?f=26&t=80395#p466013
Vorrei infine sapere se normalmente apri o salvi file su drive di rete o che comunque non siano il drive C.

Questo con l' obiettivo di scoprire come mai un' operazione che la macro dovrebbe eseguire non viene eseguita.
Intanto conferma anche quale e' il tuo sistema operativo e quale versione di excel usi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare riga in un DB

Postdi Anthony47 » 01/01/14 13:59

Hai aperto una nuova discussione (vedi viewtopic.php?f=26&t=100889) che "mi sembra" la continuazione di questa.
Non e' che i due file di cui parli siano in due drive diversi (come scrivi in "quella" discussione), e non sullo stesso drive (come scritto in "questa")? Questo spiegherebbe molte cose...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 02/01/14 10:36

CONFESSO TUTTO!!! :-D

si... ho aperto quella nuova discussione perchè sono cambiate un po di cose e mi ero accorto che c'erano alcuni errori.

nella nuova discussione è tutto, a mio modo di vedere, più chiaro.

quanto ai drive, si... sono 2 directory differenti.
il file origine (AirEx) si trova sul mio desktop, mentre il file Quotazioni ... si trova su una cartella condivisa in X

ciao
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55

Re: [Excel] Copiare riga in un DB

Postdi Anthony47 » 02/01/14 19:48

Quindi si continua qui: viewtopic.php?f=26&t=100889
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare riga in un DB

Postdi Lele2774 » 04/01/14 16:11

esatto ;-)
Lele2774
Utente Junior
 
Post: 54
Iscritto il: 05/10/12 14:55


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Copiare riga in un DB":


Chi c’è in linea

Visitano il forum: Gianca532011 e 42 ospiti