Condividi tramite

Esportare dati da un file xls ad un altro

Anonimo
2017-12-07T15:44:12+00:00

Buongiorno a tutti e grazie a chi spendere del tempo per darmi una mano.

Ho un foglio excel dove all'interno ci sono dei dati (nome, cognome, numero di telefono ecc), il mio intento é quello di creare all'interno del file un pulsante che prende i dati dalle righe e li esporta in un nuovo file (anche foglio va bene).

Allego un esempio di quello che vorrei realizzare...

Continuo avvisando tutti che é la prima volta che metto le mani su excel quindi abbiate pazienza :(

https://we.tl/X8sx7MLIUA

Grazie a tutti, E.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2017-12-07T18:19:57+00:00

    Ciao Elliot,

    La macro funziona, ed é già una gran cosa, stavo sbattendo la testa per niente fino a prima del tuo intervento.

    Purtroppo selezionando una delle 9 presenti nel file e cliccando sul pulsante con la macro collegata, nel file generato trovo ripetuto quello che scrivo nella colonna B.

    Selezionando la riga 1 nel file generato trovo B1 ripetuto in A1 A2 e A3 anziché tre valori diversi.

    Come mai?

    Mea culpa! Ho scritto il codice al volo senza testarlo!  

    Sostituisci l'istruzione:

       RngOut.Value = arrOut

    con:

         RngOut.Value = Application.Transpose(arrOut)

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-12-07T20:51:48+00:00

    Ciao Elliot,

    funziona alla perfezione. Mille grazie.

    Prego! Mi fa piacere che tu abbia risolto il problema.

    Giusto a titolo informativo/accademico:

    Se creassi un template, con delle celle prestabilite sarebbe possibile possibile popolarle ad esempio dal foglio 1 al template (foglio 2) estrapolando da celle determinate a quelle del template anch'esse prestabilite?

    Ad esempio, selezionando riga 1 del foglio 1 potrei estrapolare A1 C1 F1 e riceverle come output sul foglio 2 per esempio in posizioni H4 N7 e F3?

    Certo! Basterebbe una leggera modifica della mia procedura.

    Sono off topic?

    No, per niente! A me risulta una domanda eminentemente legittima e un naturale seguito alla tua richiesta originale.

    Quindi, per rendere la mia procedura più flessibile e più generica, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester2()

        Dim newWB As Workbook

        Dim srcSH As Worksheet

        Dim destSH As Worksheet

        Dim RngDati As Range, RngIn As Range

        Dim destRng As Range, rCell As Range

        Dim arrIn As Variant, arrOut() As Variant

        Dim Res As Variant

        Dim i As Long, j As Long, UB As Long

        Const sColonneDaCopiare As String = "A:A,C:C,F:F,G:G,I:I"

        Const sCelleDestinazione As String = "H4,N7,F3,K5,B2"

        Set RngDati = ActiveCell.CurrentRegion

        Set RngIn = Intersect(RngDati.Rows(ActiveCell.Row), _

                              ActiveSheet.Range(sColonneDaCopiare))

        UB = RngIn.Cells.Count

        ReDim arrIn(1 To UB)

        For Each rCell In RngIn.Cells

            i = i + 1

            arrIn(i) = rCell.Value

        Next rCell

        Set newWB = Workbooks.Add(xlWBATWorksheet)

        Set destSH = newWB.Sheets(1)

        Set destRng = destSH.Range(sCelleDestinazione)

        For Each rCell In destRng.Cells

            j = j + 1

            rCell.Value = arrIn(j)

        Next rCell

        Res = Application.GetSaveAsFilename(FileFilter:="File xlsx (*.xlsx, *.xlsx")

        If Not Res = False Then

            newWB.SaveAs Filename:=Res, FileFormat:=51

        End If

    End Sub

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm

    Potresti scaricare il mio file di prova Elliot#2_2011207.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-12-07T19:03:03+00:00

    Sei un mito! funziona alla perfezione. Mille grazie.

    Giusto a titolo informativo/accademico:

    Se creassi un template, con delle celle prestabilite sarebbe possibile possibile popolarle ad esempio dal foglio 1 al template (foglio 2) estrapolando da celle determinate a quelle del template anch'esse prestabilite?

    Ad esempio, selezionando riga 1 del foglio 1 potrei estrapolare A1 C1 F1 e riceverle come output sul foglio 2 per esempio in posizioni H4 N7 e F3?

    Sono off topic?

    Grazie ancora, sei davvero in gamba.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-12-07T18:04:40+00:00

    Ciao,

    innanzitutto ti ringrazio per il tempo speso.

    La macro funziona, ed é già una gran cosa, stavo sbattendo la testa per niente fino a prima del tuo intervento.

    Purtroppo selezionando una delle 9 presenti nel file e cliccando sul pulsante con la macro collegata, nel file generato trovo ripetuto quello che scrivo nella colonna B.

    Selezionando la riga 1 nel file generato trovo B1 ripetuto in A1 A2 e A3 anziché tre valori diversi.

    Come mai?

    Grazie, E.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-12-07T17:44:18+00:00

    Ciao Elliot,

    Ho un foglio excel dove all'interno ci sono dei dati (nome, cognome, numero di telefono ecc), il mio intento é quello di creare all'interno del file un pulsante che prende i dati dalle righe e li esporta in un nuovo file (anche foglio va bene).

    Allego un esempio di quello che vorrei realizzare...

    Continuo avvisando tutti che é la prima volta che metto le mani su excel quindi abbiate pazienza :(

    Prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim newWB As Workbook

        Dim RngIn As Range, RngOut As Range

        Dim arrIn As Variant, arrOut() As Variant

        Dim arrOrder As Variant

        Dim i As Long, UB As Long

        Const sOrder As String = "2,3,1"    '\Nome | Cognome | Data

        Set RngIn = ActiveCell.EntireRow.Cells(1).Resize(1, 3)

        arrIn = RngIn.Value

        UB = UBound(arrIn, 2)

        ReDim arrOut(1 To UB)

        arrOrder = Split(sOrder, ",")

        For i = 1 To UB

            arrOut(i) = arrIn(1, CLng(arrOrder(i - 1)))

        Next i

        Set newWB = Workbooks.Add(xlWBATWorksheet)

        Set RngOut = newWB.Sheets(1).Range("A1").Resize(UB)

        RngOut.Value = Application.Transpose(arrOut)

        newWB.SaveAs Filename:=Join(arrOut, "_"), FileFormat:=51

    End Sub

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester
    • Esegui

    Se volessi utilizzare un pulssante per eseguire il codice:

    • Inserisci un pulsante oppure una qualsiasi forma
    • Fai clic dx sul pulsante/forma
    • Assegna Macro
    • Digita Tester
    • OK

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento