macro estrazione dati che crea un nuovo file e non un nuovo foglio

Anonimo
2016-01-04T11:25:24+00:00

ciao a tutti e grazie per l'aiuto!

premetto che non sono pratico di vba e copiando qua e la ho trovato una macro per estrarre i dati da righe di una tabella e create un file txt con una formattazione specifica con spazi, il problema è che per fare questo la macro crea un foglio temporaneo, poi salva questo foglio temporaneo com txt e io mi trovo con l'intera cartella di lavoro salvata come txt, quindi devo chiudere e riaprire la cartella di lavoro excel e devo sempre ricordarmi di salvare prima di avviare la macro per non perdere dati... quindi è possibbile modificare la macro affinche crei un nuovo file excel, copi i dati e lo salvi come txt e magari lo chiuda anche automaticamente? cosi da trovarmi col file txt generato archiviato e il mio foglio di lavoro excel immutato? grazie milee ma proprio non so dove mettere le mani

Sub Estrazione()

'

Dim oFoglio As Worksheet, oNuovoFoglio As Worksheet

Dim i As Long, j As Long, sRecord As String

Dim sNomeFile As String, sPath As String

Set oFoglio = ActiveSheet

   'Rileva percorso attuale sul file system.

    sPath = ActiveWorkbook.Path

    'Crea un nuovo foglio temporaneo su cui esportare

    Set oNuovoFoglio = ActiveWorkbook.Sheets.Add

    'indice prima riga

    i = 2

    'indice prima riga foglio temporaneo

    j = 1

  'Inizia un loop su tutte le righe del foglio.

    'La procedura si interrompe quando trova la prima riga vuota.

    Do Until oFoglio.Cells(i, 1).Value = ""

        'Recupera le informazioni per la singola riga.

        'colonna A; lunghezza=2

        sRecord = Left$(oFoglio.Cells(i, 1).Value & Space$(2), 2)

        'colonna B; lunghezza=10

        sRecord = sRecord & Left$(oFoglio.Cells(i, 2).Value & Space$(10), 10)

        'colonna C; lunghezza=2

        sRecord = sRecord & Left$(oFoglio.Cells(i, 3).Value & Space$(2), 2)

        'colonna D; lunghezza=50

        sRecord = sRecord & Left$(oFoglio.Cells(i, 4).Value & Space$(50), 50)

        'colonna E; lunghezza=30

        sRecord = sRecord & Left$(oFoglio.Cells(i, 5).Value & Space$(30), 30)

        'colonna F; lunghezza=1

        sRecord = sRecord & Left$(oFoglio.Cells(i, 6).Value & Space$(1), 1)

        'colonna G; lunghezza=10

        sRecord = sRecord & Left$(oFoglio.Cells(i, 7).Value & Space$(10), 10)

        'colonna H; lunghezza=9

        sRecord = sRecord & Left$(oFoglio.Cells(i, 8).Value & Space$(9), 9)

        'colonna I; lunghezza=2

        sRecord = sRecord & Left$(oFoglio.Cells(i, 9).Value & Space$(2), 2)

        'colonna J; lunghezza=9

        sRecord = sRecord & Left$(oFoglio.Cells(i, 10).Value & Space$(9), 9)

        'colonna K; lunghezza=9

        sRecord = sRecord & Left$(oFoglio.Cells(i, 11).Value & Space$(9), 9)

        'colonna L; lunghezza=5

        sRecord = sRecord & Left$(oFoglio.Cells(i, 12).Value & Space$(5), 5)

        'colonna M; lunghezza=20

        sRecord = sRecord & Left$(oFoglio.Cells(i, 13).Value & Space$(20), 20)

        'colonna N; lunghezza=9

        sRecord = sRecord & Left$(oFoglio.Cells(i, 14).Value & Space$(9), 9)

        'Scrive il record sul nuovo foglio temporaneo

        oNuovoFoglio.Cells(j, 1).Value = sRecord

        'individua la prossima riga

        i = i + 1

        j = j + 1

    Loop

    'Richiede un nome da dare al file

    sNomeFile = InputBox("Inserire il nome del file da dare al file:", "Salva file")

    'Controlla che non sia stato premuto il pulsante di cancellazione o il nome sia vuoto.

    If sNomeFile = "" Then

        MsgBox "Salvataggio interrotto!", vbExclamation

    Else

        'Salva il foglio in formato testo

        oNuovoFoglio.SaveAs Filename:=sPath & "" & sNomeFile, FileFormat:=xlTextWindows

        MsgBox "Estrazione conclusa! E' stato generato il file:" & vbCr & sPath & "" & sNomeFile, vbInformation

    End If

End Sub

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

2 risposte

Ordina per: Più utili
  1. Anonimo
    2016-01-04T16:15:15+00:00

    ecco il link al file di prova:

    https://drive.google.com/file/d/0B0cCdp7kAZx-WXRLb1VVTGxHMFU/view?usp=sharing

    Grazie ancora per la disponibilità!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-04T12:41:09+00:00

    Ciao patanka,

     è possibbile modificare la macro affinche crei un nuovo file excel, copi i dati e lo salvi come txt e magari lo chiuda anche automaticamente? cosi da trovarmi col file txt generato archiviato e il mio foglio di lavoro excel immutato? 

    Ti chiederei di caricare un file di esempio su un servizio di condivisione del tipo Microsoft OneDrive o Dropox. Cancella i dati sensibili  e posta un link al file in una risposta qui.

    Approfitto per chiederti gentilmente di fornire un riscontro alla mia risposta nel tuo thread recente: 

    http://answers.microsoft.com/it-it/office/forum/office_2013_release-excel/macro-inserimento-dati-da-maschera/5108f7b4-0575-4ebc-8a66-21d19293fc69

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento