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