Risultati da 1 a 19 di 19

Discussione: Copiare colonne foglio da file esterno



  1. #1
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Copiare colonne foglio da file esterno

    Ciao a tutti,
    continua il mio rompermi la testa con VBA.
    Ho provato a fare una macro per importare l'intero foglio da un file esterno.
    La macro è questa ma mi da errore di sintassi:
    Codice: 
    Sub Copia_foglioWGT1()
    Workbooks.Open Filename:="MONITORSALDILOTTILOCAZIONI-.xlsx"  Worksheets("WGT1").Copy  After:=Workbooks("Helper_forum.xlsm").Worksheets("Menu")     
    End Sub
    In realtà poi avrei provato a:
    1) Importare solo specifiche colonne
    2) sovrascrivere sempre il foglio WGT1 in fase di importazione
    3) copiare tutto fino a prima cella vuota nella colonna B

    https://www.dropbox.com/s/dkfrvyudmz...F%26P.rar?dl=0

    Grazie
    Gene

  2. #2
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1097
    Versione Office
    2010
    Likes ricevuti
    141
    Likes dati
    1

    Re: Copiare colonne foglio da file esterno

    non puoi scrivere tutto in una riga, non basta il nome del file il percorso deve essere completo
    Codice: 
    Sub Copia_foglioWGT1()
    Set WB = ActiveWorkbook
    Workbooks.Open Filename:="F:\Download\MONITORSALDILOTTILOCAZIONI-.xlsx" ' il percorso deve essere completo
    Sheets("WGT1").Copy After:=WB.Sheets(WB.Sheets.Count)
    End Sub

  3. #3
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    premesso che ho alcune perplessità, intanto correggi la macro come segue
    Codice: 
    Sub Copia_foglioWGT1()
        perc = ActiveWorkbook.Path
        Workbooks.Open Filename:=perc & "\MONITORSALDILOTTILOCAZIONI-.xlsx"
        ActiveWorkbook.Worksheets("WGT1").Copy After:=Workbooks("Helper_forum.xlsm").Worksheets("Menu")
        Workbooks("MONITORSALDILOTTILOCAZIONI-.xlsx").Close
    End Sub
    Questa macro apre la cartella (ma perchè usi sempre nomi così lunghi???) e copia il foglio, quindi lo incolla in foglio nuovo dopo menu. Poi chiude la cartella (altrimenti rimane aperta).

    Ovvio che se il foglio esiste ne crea uno nuovo. Ma tu vuoi
    1) Importare solo specifiche colonne
    2) sovrascrivere sempre il foglio WGT1 in fase di importazione
    3) copiare tutto fino a prima cella vuota nella colonna B
    I primi due punti si possono fare ma vorrei capire il terzo: fino alla prima riga vuota della colonna B di quale foglio (suppongo di quello creato ma in questo caso già esistente). Non capisco perchè FINO ALLA e non DALLA.

    Ciao, Mario

    Ciao patel, come capita spesso, scusa la sovrapposizione.

    @GBove
    non avevo attenzionato che si tratta di file esterno. Il mio suggerimento presuppone che siano nella stessa Directory.

  4. #4
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    (ma perchè usi sempre nomi così lunghi???) --> stavolta sono innocente. E' il nostro gestionale che nel salvarlo in formato excel definisce questo nome!!

    I primi due punti si possono fare ma vorrei capire il terzo: fino alla prima riga vuota della colonna B di quale foglio (suppongo di quello creato ma in questo caso già esistente). Non capisco perchè FINO ALLA e non DALLA. -> volevo evitare che la presenza di poche righe potesse ingannare e quindi che si limitasse il campo di importazione alla riga 9

    Ciao, Mario

    Ciao patel, come capita spesso, scusa la sovrapposizione.

    @GBove
    non avevo attenzionato che si tratta di file esterno. Il mio suggerimento presuppone che siano nella stessa Directory.--> Farò in modo che sia cosi!
    Gene

  5. #5
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao a tutti,
    l'amico Mario è, spero, "in ponte". Qualcun altro di buona cuore per dritte ad hoc?

    Gene

  6. #6
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    ma quale ponte! Coi tempi che corrono è meglio stare lontani ... dal mare.

    Eccoti la macro che crea il foglio nuovo se non esiste oppure sovrascrive se esiste già.
    Codice: 
    Sub Copia_foglio()
        'controlla se il foglio esiste giò
        fgl = 0
        With Workbooks("Helper_forum.xlsm")
            For i = 1 To Sheets.Count
                If .Sheets(i).Name = "WGT1" Then
                    fgl = 1
                    Exit For
                End If
            Next i
            perc = ActiveWorkbook.Path
            Workbooks.Open Filename:=perc & "\MONITORSALDILOTTILOCAZIONI-.xlsx"
        'incolla dati
            If fgl = 1 Then 'sovrascrive perchè il foglio esiste già
                ActiveWorkbook.Worksheets("WGT1").Cells.Copy
                Workbooks("Helper_forum.xlsm").Activate
                ActiveWorkbook.Worksheets("WGT1").Cells(1, 1).PasteSpecial
                Cells(1, 1).Select
            Else
                'crea il foglio perchè non esiste
                ActiveWorkbook.Worksheets("WGT1").Copy _
                    After:=Workbooks("Helper_forum.xlsm").Worksheets("Menu")
            End If
        End With
        Workbooks("MONITORSALDILOTTILOCAZIONI-.xlsx").Close
    End Sub
    Come già detto la macro funziona SE i due file sono nella stessa cartella altrimenti devi adattare queste righe al percorso di residenza del File
    Codice: 
    perc = ActiveWorkbook.Path
    Workbooks.Open Filename:=perc & "\MONITORSALDILOTTILOCAZIONI-.xlsx"
    Come puoi notare mancano (per la fretta) tutti i Dim per le variabili. Provvedi tu.
    Ciao e buon w.e.
    Mario

  7. #7
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    io ci provo ma non sono ancora arrivato al capitolo delle DIM---:22:_

    Gene

  8. #8
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    potrebbe essere cosi?
    Codice: 
    Sub Copia_foglio()
        Dim Helper_forumWorkbook As Workbook
        Set Helper_forumWorkbook = Workbooks("Helper_forum")
        Dim WGT1Sheet As Worksheet
        Dim MenuSheet As Worksheet
    
    'controlla se il foglio esiste già
        fgl = 0
        With Workbooks("Helper_forum.xlsm")
            For i = 1 To Sheets.Count
                If .Sheets(i).Name = "WGT1" Then
                    fgl = 1
                    Exit For
                End If
            Next i
            perc = ActiveWorkbook.Path 'SE i due file sono nella stessa cartella altrimenti devi adattare queste righe al percorso di residenza del File
            Workbooks.Open Filename:=perc & "\MONITORSALDILOTTILOCAZIONI-.xlsx" 'vedi sopra
        'incolla dati
            If fgl = 1 Then 'sovrascrive perchè il foglio esiste già
                ActiveWorkbook.Worksheets("WGT1").Cells.Copy
                Workbooks("Helper_forum.xlsm").Activate
                ActiveWorkbook.Worksheets("WGT1").Cells(1, 1).PasteSpecial
                Cells(1, 1).Select
            Else
                'crea il foglio perchè non esiste
                ActiveWorkbook.Worksheets("WGT1").Copy _
                    After:=Workbooks("Helper_forum.xlsm").Worksheets("Menu")
            End If
        End With
        Workbooks("MONITORSALDILOTTILOCAZIONI-.xlsx").Close
    End Sub
    Attendo tue.

    Gene

  9. #9
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    vedo che sei mattiniero :167:
    Lascia perdere le Dim. Dopo che le avrai studiate ti verrà facile, per adesso elimina quelle righe che hai scritto.

    Non mi dici, però, se la macro va bene. Funziona? Credo di si, anche se copia l'intero foglio e non solo le colonne (come da titolo).

    Ciao,
    Mario

  10. #10
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    è ovvio che il tuo lavoro funziona.:18:
    Ma come mio tutor hai l'obbligo morale di aiutarmi nell'apprendimento quindi, infierisci pure e correggimi la macro inserendo le Dim e dandomi una dritta su come copiare le singole colonne.

    PS Lo devi fare anche per il mantenimento del buon nome di questo forum e di Gerardo che tanto si prodica.
    Un titolo che non trova soluzione al'interno del thread è qualcosa da lavare col sangue:86:.

    Gene

  11. #11

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7106
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2059
    Likes dati
    1296

    Re: Copiare colonne foglio da file esterno

    Ciao Gene,
    usa Option Explicit in testa al codice, vedrai che sarà il debugger a "protestare" evidenziando le righe "incriminate"!:32:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  12. #12
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Ges,
    fatto. La prima protesta è stata:
    Codice: 
    fgl = 0
    Che ho eliminato poi:
    Codice: 
    For i = 1 To Sheets.Count
    Conclusione: non ci ho capito nà mazza!!

    Mentre ho continuato le prove sul codice original di Mario e funziona egregiamente alla prima importazione ma quando rischiaccio il pulsantr con il foglio "WGT1" già presente si imballa tutto ed esce fuori l'avviso "impossibile completare questa attività con le risorse disponibili....etc".

    Come mai?

    Gene

  13. #13
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    il discorso è troppo lungo per parlarne qui, ma facciamo un'eccezione partendo dall'ottimo suggerimento di ges (che saluto).

    Dopo aver messo nelle Dichiarazioni (cioè al di sopra della prima macro) Option Explicit, inizi la tua macro con Sub ecc.ecc.()
    Immediatamente cominci a dichiarare cosa sarà usato nella macro e cos'è.
    Quindi, per esempio, scriverò Dim i As Long, nome As String, num As Double. Con questo sto dicendo ad Excel che quando incontra la i deve considerarla un numero, nome è una stringa, num è un numero (ma diverso da i). Se nel corso della macro dovessi scrivere i = "Mario" oppure nome = 100 sentirai il debugger come s'incazza (ops, pardon).
    Nel nostro caso bisogna scrivere (partendo dal secondo rigo in giù)
    Dim fgl As Integer (questo perchè alla variabile integer ho assegnato solo i valori 0 e 1, ma avrei potuto dichiararla Dim fgl as Boolean se avessi assegnato i valori VERO/FALSO)
    Dim i As long (perchè si riferisce alle righe e possono essere al di fuori del -32.768 e 32.767 che è quello relativo ad integer)
    Dim perc As String (sara la stringa relativa al percorso)

    E qui mi fermo perchè non i pare ci siano altre variabili.
    Alla seconda puntata affronteremo il Set (non quello cinematografico).

    Ciao,
    Mario

  14. #14
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    se ho capito bene la prima lezione:
    Codice: 
    Option Explicit
    Sub Copia_foglio()
        Dim fgl As Integer
        Dim i As long
        Dim perc As String
        fgl = 0 'controlla se il foglio esiste giò
        With Workbooks("Helper_forum.xlsm")
            For i = 1 To Sheets.Count
                If .Sheets(i).Name = "WGT1" Then
                    fgl = 1
                    Exit For
                End If
            Next i
            perc = ActiveWorkbook.Path
            Workbooks.Open Filename:=perc & "\MONITORSALDILOTTILOCAZIONI-.xlsx"
        'incolla dati
            If fgl = 1 Then 'sovrascrive perchè il foglio esiste già
                ActiveWorkbook.Worksheets("WGT1").Cells.Copy
                Workbooks("Helper_forum.xlsm").Activate
                ActiveWorkbook.Worksheets("WGT1").Cells(1, 1).PasteSpecial
                Cells(1, 1).Select
            Else
                'crea il foglio perchè non esiste
                ActiveWorkbook.Worksheets("WGT1").Copy _
                    After:=Workbooks("Helper_forum.xlsm").Worksheets("Menu")
            End If
        End With
        Workbooks("MONITORSALDILOTTILOCAZIONI-.xlsx").Close
    End Sub
    Intanto, se domattina mi alzo presto (probabilità: 100%) provo a studiare il Set.

    Gene

  15. #15

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7106
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2059
    Likes dati
    1296

    Re: Copiare colonne foglio da file esterno

    Ciao Gene, visto che vuoi studiare il vba, sarebbe utile un buon testo.

    Dal manuale di G. Giaccaglini "Excel e Office vba" pag. 127:

    " L'istruzione Set (ossia "Imposta") assegna un riferimento di oggetto a una variabile o ad una proprietà.

    La sintassi è la seguente:

    Set <Variabileoggetto>= (Oggetto \ Nothing)

    - Variabileoggetto è il nome della variabile o proprietà
    - Oggetto è il nome di un oggetto o di un'altra variabile dello stesso tipo oggetto oppure una funzione o un metodo che restituisce un oggetto dello stesso tipo
    - Nothing interrompe il collegamento di variabile oggetto con l'oggetto, rendendo così disponibile tutte le risorse di memoria associate all'oggetto cui si fa riferimento"

    Esempio pratico:
    Codice: 
    Sub esercitazione()
    Dim wks As Worksheet
    Set wks = Worksheets("Foglio1")
    With wks
    
    '....(codice)..
    
    End With
    Set wks = Nothing
    End Sub
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  16. #16
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    All'esaustivo esempio di ges (un saluto) aggiungerei che ... questa opportunità risulta molto utile nel tuo caso coi nomi dei file chilometrici. Abbinando Dim e Set potresti fare:
    Dim wbk1 As Workbook, wbk2 As Workbook
    Set wbk1 = Workbooks("Helper_forum.xlsm")
    Set wbk2 = Workbooks("
    MONITORSALDILOTTILOCAZIONI-.xlsx")

    e quindi utilizzare SOLO wbk1 o wbk2 al posto di tutti quei caratteri.
    Alla fine della macro, prima di End Sub, postare a Nothing
    Spero di non aver sbagliato nulla. Ciao,
    Mario

  17. #17
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao ragazzi,
    cosi vado in confusione.

    Restando sul thread.

    @Marius

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Dim wbk1 As Workbook, wbk2 As Workbook
    Set wbk1 = Workbooks("Helper_forum.xlsm")
    Set wbk2 = Workbooks("
    MONITORSALDILOTTILOCAZIONI-.xlsx")

    Nothing
    Il tuo suggerimento và a sostituire parte del codice del post #14 ?

    Per quanto riguarda:
    Mentre ho continuato le prove sul codice original di Mario e funziona egregiamente alla prima importazione ma quando rischiaccio il pulsante con il foglio "WGT1" già presente si imballa tutto ed esce fuori l'avviso "impossibile completare questa attività con le risorse disponibili....etc".
    Hai un suggerimento ?

    Gene

  18. #18
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Copiare colonne foglio da file esterno

    Ciao Gene
    1°) punto - a me funziona alla perfezione (crea il foglio se non c'è oppure lo sovrascrive se esiste già). L'unica cosa che mi dice è che "gli Appunti contengono molti dati. Li devo salvare oppure no" (in parole povere) ma è facilmente superabile.

    2°) punto - sostituisce e non sostituisce! Studia, ragazzo, studia:167::167::167:
    A parte gli scherzi, poi ne parliamo. Intanto lascia tutto come è adesso.

    Buona domenica,
    Mario

  19. #19
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare colonne foglio da file esterno

    Ciao Mario,
    avevi ragione ho provato su altro computer e funziona alla perfezione.:97:

    Grazie
    Gene

Discussioni Simili

  1. [Risolto] Copiare colonne da due file differenti
    Di Maria16 nel forum Domande su Excel VBA e MACRO
    Risposte: 9
    Ultimo Messaggio: 17/03/17, 13:23
  2. Salvare dati su file esterno senza aprire il file di destinazione
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 19/11/16, 09:28
  3. Copiare colonne e accodarle in altro foglio
    Di milanetti nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 02/08/16, 11:22
  4. Copiare formule da un altro foglio saltando le colonne
    Di rescassiste nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 10/06/16, 14:34
  5. Copiare dati celle in colonne altro foglio
    Di Cavier80 nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 22/05/16, 22:29

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •