Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

VBA passaggio da un file ad un altro

Ultimo Aggiornamento: 18/01/2018 08:39
Post: 4
Registrato il: 25/08/2017
Città: ALBIZZATE
Età: 35
Utente Junior
Excel 2016
OFFLINE
09/01/2018 21:08

Copiare dati da un file ad un altro
ciao a tutti,
ho sviluppato questo codice:

Sub Esporta_Dati() 'Esporta la configurazione nel file archivio

'nomefile_2 = "98 - Archivio configurazioni macchine.xlsx"
'indirizzo = "G:\operation\Private\03 - Servizi Tecnici Fabbrica\01 - Industrializzazione\02 - Cicli Macchine\"


Dim erw As Integer
Dim rpwr As Integer
Dim nomefile As String
Dim nomefile2 As String
Dim colonnafoglio2 As Integer
Dim IDcommessa As Integer
Dim IDriga As Integer

erw = Foglio2.Cells(2, 6).CurrentRegion.Rows.Count
Rprw = Foglio4.Cells(1, 1).CurrentRegion.Rows.Count + 1

IDriga = 1

For Row = 6 To erw


For Coloumn = 2 To 15

Foglio4.Cells(Rprw, Coloumn + 3) = Foglio2.Cells(Row, Coloumn)
Foglio4.Cells(Rprw, 3) = Foglio2.Cells(4, 2)
Foglio4.Cells(Rprw, 4) = Foglio2.Cells(4, 1)

Next

Foglio4.Cells(Rprw, 2) = IDriga

IDriga = IDriga + 1

Rprw = Rprw + 1


Next

End Sub



Lo scopo è quello di archiviare man mano i dati presenti in un foglio (che possono avere lunghezza variabile) in un altro foglio. Sono riuscita a farlo tra 2 fogli, come da file allegato, il mio obiettivo però è riuscire a farlo tra 2 fogli di 2 file diversi.

Secondo voi qual è la soluzione migliore in questo caso? Volevo provare utilizzando gli oggetti, quindi idealmente file.foglio.range etc...ma non riesco a trovare una sintassi del genere


Grazie!

[Modificato da Valeria89182 11/01/2018 23:15]
Post: 7
Registrato il: 25/08/2017
Città: ALBIZZATE
Età: 35
Utente Junior
Excel 2016
OFFLINE
11/01/2018 23:14

Nessuno riesce ad aiutarmi? [SM=x423054]
Post: 843
Registrato il: 24/04/2004
Città: TERAMO
Età: 63
Utente Senior
2010
OFFLINE
12/01/2018 01:35

Re:
Valeria89182, 11/01/2018 23.14:

Nessuno riesce ad aiutarmi?

Ciao.
Questo è un forum tecnico, non una chat-room; non puoi aspettarti una risposta appena poni un quesito.
Per allegare del codice, inseriscilo fra i tag CODE in questo modo risulta molto più leggibile e non si perde l'indentazione (se c'è).

Riguardo al quesito, supponendo che il codice che hai allegato funzioni, puoi usare qualcosa del genere
Sub Esporta_Dati() 'Esporta la configurazione nel file archivio
Dim Erw As Long, Rprw As Long, Column As Long, IDcommessa As Long, IDriga As Long, Row As Long
Dim Nomefile As String
Dim Nomefile2 As String
Dim Wk1 As Workbook, Wk2 As Workbook
    Nomefile2 = "PercorsoFile\Nomefile" '<==inserisci il percorso e il nome del file di destinazione
    Set Wk1 = ThisWorkbook 'il file che contiene la macro
    Set Wk2 = Workbooks.Open(Nomefile2) 'il file che vai ad aprire
    Erw = Wk1.Foglio2.Cells(2, 6).CurrentRegion.Rows.Count
    Rprw = Wk2.Foglio4.Cells(1, 1).CurrentRegion.Rows.Count + 1
    IDriga = 1
    For Row = 6 To Erw
        For Column = 2 To 15
            Wk2.Foglio4.Cells(Rprw, Column + 3) = Wk1.Foglio2.Cells(Row, Column)
            Wk2.Foglio4.Cells(Rprw, 3) = Wk1.Foglio2.Cells(4, 2)
            Wk2.Foglio4.Cells(Rprw, 4) = Wk1.Foglio2.Cells(4, 1)
        Next
        Wk2.Foglio4.Cells(Rprw, 2) = IDriga
        IDriga = IDriga + 1
        Rprw = Rprw + 1
    Next
    Wk2.Close True 'chiude e salva il file che hai aperto
    Set Wk1 = Nothing
    Set Wk2 = Nothing
End Sub


[Modificato da Zer0kelvin 12/01/2018 01:39]
__________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya)
Post: 8
Registrato il: 25/08/2017
Città: ALBIZZATE
Età: 35
Utente Junior
Excel 2016
OFFLINE
17/01/2018 12:42

ciao, grazie mille per la tua risposta!
ho provato a modificare il mio codice ma mi dà errore alla riga:

CODE
Erw = Wk1.Foglio2.Cells(2, 6).CurrentRegion.Rows.Count
CODE

"errore run-time 438 Proprietà o metodo non supportati dall'oggetto"

Il codice che ho messo inizialmente io funziona correttamente.

Sto sbagliando qualcosa?

Grazie,
Valeria
Post: 4.053
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
17/01/2018 13:11

temo che CurrentRegion funzioni soltanto sul Documento attivo e non voglia il riferimento a wk1 wk2, occorre determinare il numero di righe in altro modo, magari con
LR = wk1.Foglio1.Cells(Rows.Count, "A").End(xlUp).Row

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 853
Registrato il: 24/04/2004
Città: TERAMO
Età: 63
Utente Senior
2010
OFFLINE
17/01/2018 15:45

Ciao Patel, credo che l'errore sia dovuto al riferimento
Wk1.Foglio2
VBA non riconosce foglio2 come appartenente a Wk1; sostituendo Foglio2 con Sheets("Nome che dovrebbe avere il foglio") oppure con Sheets(Numero del foglio) l'errore dovrebbe scomparire.
Mi ero già scontrato con questa incongruenza di VBA in passato e tuttora non me la spiego.
Infatti, se nell'editor scrivi Wk1., i fogli non compaiono nell'elenco delle proprietà disponibili per il Worksheet.
Difatti l'istruzione
Erw = Foglio2.Cells(2, 6).CurrentRegion.Rows.Count
non provoca errore.
[Modificato da Zer0kelvin 17/01/2018 15:48]
__________________________
[Excel 2010]
-Condividere la conoscenza aumenta la ricchezza di tutti.
-Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
-Il sonno della ragione genera mostri. (Francisco Goya)
Post: 9
Registrato il: 25/08/2017
Città: ALBIZZATE
Età: 35
Utente Junior
Excel 2016
OFFLINE
18/01/2018 08:39

grazie mille!!
utilizzando sheets() funziona correttamente!

Valeria
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:06. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com