Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Da file excel copiare in txt

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Da file excel copiare in txt

Postdi femon » 25/03/21 16:35

Buongiorno, avrei un problema da risolvere se è possibile:
Ho un foglio excel con molti record e 5 colonne, dovrei cercare il contenuto della cella A2 nelle prime 18 colonne di un foglio txt ed una volta individuata la riga copiare il contenuto della cella B1 nella riga corrispondente del foglio txt dalla colonna 19 alla colonna 75 mettendo spazi bianchi qualora il contenuto fosse più corto.
Dalla colonna 76 in poi lasciare tutto come era in txt.
Questo per tutte le righe del foglio excel....
Ho provato con le varie importazioni ed esportazioni su excel ma non ci sono riuscito....
Qualcuno può darmi una mano?
Serve forse una macro in vba?
Grazie in anticipo.
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51

Sponsor
 

Re: Da file excel copiare in txt

Postdi Anthony47 » 25/03/21 16:56

Che cosa e' "un foglio txt"?
Comunque se alleghi un set di file dimostrativi sara' piu' semplice capire ma anche risponderti.

Per le istruzioni su come allegare files:
viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17651
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Da file excel copiare in txt

Postdi femon » 25/03/21 17:44

Scusa Anthony per file txt intendevo un semplice foglio di testo che apro con notepad dunque il file avrebbe estensione .txt
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51

Re: Da file excel copiare in txt

Postdi Anthony47 » 25/03/21 19:16

Immaginavo, ma rimane sempre il dubbio di quale sia in un file di testo la colonna 18 o la 19 o la 75.

Confermerei la richiesta di avere dei file dimostrativi del tuo ambiente, sia per capire ma anche per usarli come ambiente di sviluppo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17651
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Da file excel copiare in txt

Postdi femon » 25/03/21 21:04

<a href=http://www.filedropper.com/casoexcel><img src=http://www.filedropper.com/download_button.png width=127 height=145 border=0/></a><br /><div style=font-size:9px;font-family:Arial, Helvetica, sans-serif;width:127px;font-color:#44a854;> <a href=http://www.filedropper.com >file storage online</a></div>
http://www.filedropper.com/casoexcel
http://www.filedropper.com/esempio_15
<a href=http://www.filedropper.com/esempio_15><img src=http://www.filedropper.com/download_button.png width=127 height=145 border=0/></a><br /><div style=font-size:9px;font-family:Arial, Helvetica, sans-serif;width:127px;font-color:#44a854;> <a href=http://www.filedropper.com >file storage</a></div>

Grazie Antony, spero di aver caricato giusto i files.
In pratica vorrei che il file "caso excel" cercasse i campi della colonna A: "codice a 18 caratteri" nel file "esempio.txt"
Una volta che ha individuato la riga corretta, dovrebbe copiare il contenuto del record corrispondente in excel della colonna B:"DESCRIZIONE" e lo sovrascrivesse nel file di testo "esempio" nella riga corrispondente e nelle colonne che vanno da 19 a 75 lasciando spazi bianchi per poter arrivare alla colonna 75. Dalla colonna 76 in poi rimane tutto uguale.
In pratica nel foglio di testo viene sostituita la scritta "BBBBBBBBBBBBB B" E GLI SPAZI BIANCHI FINO ALLA COLONNA 75 con la scritta "PAOLO PAOLINI" + GLI SPAZI BIANCHI PER ARRIVARE ALLA COLONNA 75.
Tutto questo ripetuto per tutte le righe del foglio excel.
Non so se sono riuscito a farmi capire.....
Grazie mille.
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51

Re: Da file excel copiare in txt

Postdi Anthony47 » 25/03/21 23:40

Se ho capito bene potrebbe andare bene questa macro:
Codice: Seleziona tutto
Sub Femix()
Dim txtFile As String, txtLine As String
Dim fFile As Long, myMatch, repStr As String
Dim WArr(), wInd As Long
'
txtFile = "D:\DDownloads\byFEMON_esempio_C10225.txt"        '<<< Nome del file Txt
Sheets("Foglio1").Select                                    '<<< Il foglio Excel coi dati
'
fFile = FreeFile
Open txtFile For Input As #fFile
ReDim WArr(1 To 1)
wInd = 1
While Not EOF(fFile)
    Line Input #fFile, txtLine
    cr18 = Left(txtLine, 18)
    myMatch = Application.Match(cr18, Range("A:A"), False)
    WArr(wInd) = txtLine
    If Not IsError(myMatch) Then
        repStr = Cells(myMatch, "B")
        repStr = repStr & String(56 - Len(repStr), " ")
        Mid(WArr(wInd), 19, 57) = repStr
    End If
    wInd = wInd + 1
    ReDim Preserve WArr(1 To wInd)
Wend
Close #fFile
'
'Crea nuovo txt
Open txtFile For Output As #fFile
For i = 1 To wInd - 1
    Print #fFile, WArr(i)
Next i
Close #fFile
End Sub

Nota che l'approccio e' leggermente diverso da come l'hai prospettato, perche' io apro il file txt, ne leggo un record dopo l'altro, cerco se nel file Excel c'e' il codice di quel record, se Sì allora faccio la sostituzione dei crt da 19 a 74 (compresi) in un array; finita la lettura dei record vado a riscrivere il file txt con i valori aggiornati.
Rispetto a scorrere i codici sul foglio Excel e cercarlo nel file txt dovrebbe essere mediamente piu' veloce.

Metti il codice in un modulo vba del file Excel e personalizza le istruzioni marcate <<< prima di mandare la macro in esecuzione

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17651
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Da file excel copiare in txt

Postdi femon » 26/03/21 09:40

Grazie Anthony,
purtroppo la macro si ferma in questo punto:

Open txtFile For Input As #fFile

ho sbagliato qualcosa?
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51

Re: Da file excel copiare in txt

Postdi Anthony47 » 26/03/21 12:55

Grazie Anthony,
purtroppo la macro si ferma in questo punto:
Open txtFile For Input As #fFile
ho sbagliato qualcosa?
Probabilmente si: come hai personalizzato l'istruzione txtFile = "Drive:\Percorso\NomeFile" ?

Devi metterci indirizzo completo del file txt

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17651
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Da file excel copiare in txt

Postdi femon » 26/03/21 13:51

Scusa ancora ma adesso si ferma qui

repStr = repStr & String(56 - Len(repStr), " ")

dicendomi Chiamata di routine o argomento non validi
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51

Re: Da file excel copiare in txt

Postdi Anthony47 » 26/03/21 17:43

Avrai in colonna B una stringa piu' lunga di 56 caratteri...
Modifica questa parte:
Codice: Seleziona tutto
    If Not IsError(myMatch) Then
        repStr = Left(Cells(myMatch, "B"), 55)              '****
        repStr = repStr & String(56 - Len(repStr), " ")
        Mid(WArr(wInd), 19, 57) = repStr
    End If
Ho modificato la riga marcata ***

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17651
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Da file excel copiare in txt

Postdi femon » 29/03/21 11:04

Perfetto Anthony, funziona tutto come volevo.
Grazie infinite.
Sei sempre perfetto!
femon
Utente Senior
 
Post: 101
Iscritto il: 12/03/14 18:51


Torna a Applicazioni Office Windows


Topic correlati a "Da file excel copiare in txt":


Chi c’è in linea

Visitano il forum: raimea e 44 ospiti