Help my please

di il
7 risposte

Help my please

Buongiorno a tutti! sono un ragazzo delle superiori che in questo momento sta facendo lo stage estivo,arrivo al dunque, la società per cui "lavoro" mi ha chiesto di fare questo compito,solo che ora sono bloccato, il compito consiste nel creare una macro da vba che prenda dei dati da un foglio txt e li trascriva sulle celle Excel,fin qua nulla di difficile,il problema è che nel foglio mi hanno chiesto di separare le parole con le virgole e per andare a capo con il punto e virgola solo che non so come fare,potreste aiutarmi?
questo è il codice che per il momento ho messo:
Private Sub CommandButton1_Click()
Dim nRiga As Long, nvo As Integer, nv As Integer
Dim nCol As Integer, Testo As String, Riga As String
Dim myfile As String
myfile = "C:\Users\k4tech\Desktop\combo_fatale\nome_semplice.txt"

'percorso = ActiveWorkbook.Path

With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear

.Filters.Add "text", "*.txt", 1
.Show

If .SelectedItems.Count = 0 Then
MsgBox ("Nessun File selezionato, procedura annullata,stupida bb")
Exit Sub
End If



Open myfile For Input As #1
nRiga = Range("A65000").End(xlUp).Row
If nRiga = 1 Then
nRiga = 0
Else
nRiga = nRiga + 1
End If
nCol = nCol + 1
nv = InStr(nvo + 1, colonna, ";")
If nv = 0 Then
Testo = (nCt - nvo)


GoTo leggiAncora
End If
Testo = Mid(nCol, nvo + 1, (nv - 1) - nvo)
nvo = nv
Cells(nCol, nRiga) = Testo
GoTo scanTesto
leggiAncora:
nRiga = nRiga + 1
If Not EOF(1) Then
Line Input #1, Riga
nvo = 0: nCt = Len(Riga): nCol = 0
scanTesto:
nCol = nCol + 1
nv = InStr(nvo + 1, Riga, ",")
If nv = 0 Then
Testo = Right(Riga$, nCt - nvo)
Cells(nRiga, nCol) = Testo$
GoTo leggiAncora
End If
Testo = Mid(Riga$, nvo + 1, (nv - 1) - nvo)
nvo = nv
Cells(nRiga, nCol) = Testo
GoTo scanTesto
End If
Close #1
End With
End Sub


mentre il foglio txt(questo è un esempio)è cosi:"per,fare,la,banana,split,serve,usare,una,banana;più,molto,gelato,e,cioccolato."

7 Risposte

  • Re: Help my please

    Ciao badjuju,
    dimmi se ho capito: le righe del file txt sono come quelle nell'esempio, mentre sul folgio excel devi scrivere da "per" a "banana" una parola per ogni cella poi andare a capo e scrivere da "più" a Cioccolato" una parola per cella?
  • Re: Help my please

    Ciao!il compito consiste nello scrivere un tot di parole sul foglio ecxel,da li dividere ogni parola con una virgola o punto e virgola dove le virgole vengono utilizzate per dividere le parole fra le celle Excel mentre il punto e virgola per far scendere di una riga le parole dopo tale punteggiatura;comunque si,le righe del file txt sono quelle del esempio
  • Re: Help my please

    Quando arrivi alla seconda banana ( detto così fa molto ridere....e potrebbe essere male interpretato!!! ) cerchi la virgola successiva e salti il punto e virgola.
    Soluzione 1): inserisci un controllo per verificare se prima della virgola successiva c'è un punto e virgola - nel caso aumenti di una riga e torni alla colonna 1.
    Soluzione 2) riscrivi la routine e al posto di usare InStr usi Mid sul "testo completo riga" leggendo un carattere per volta e verificando se è una "virgola" o un "punto e virgola" e agendo di conseguenza

    Nel primo caso risolvi subito, nel secondo ci metti un po di più ma puoi gestire anche più condizioni (es: se trovi * metti la parola in rosso)
  • Re: Help my please

    Mi riesci a fare un esempio con il codice,che a scuola davvero è un angoscia, sembra di studiare la preistoria dei linguaggi di programmazione
  • Re: Help my please

    Preistoria.....non dirmi che non ti piacevano i dinosauri!!!!!
    
    Dim nFile    As String
    Dim rX As Integer 'riga file excel
    Dim cX As Integer 'Colonna file esxcel
    Dim X As Object 'Cella file excel
    Dim t As Integer 'Variabile per ricerca testo
    Dim tRiga As String 'Riga file
    Dim lRiga As Integer 'Lunghezza riga
    Dim iRiga As Integer 'Inizio Riga
    Dim F As Integer
    
    Sub Aiutino()
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear '
        .Filters.Add "text", "*.txt", 1
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox ("Nessun File selezionato, procedura annullata,stupida bb")
            Exit Sub
        End If
        nFile = .SelectedItems(1)
    End With
    
    rX = 1
    cX = 1
    iRiga = 1
    tRiga = ""
    
    Set X = ThisWorkbook.Worksheets(1).Cells
    Open nFile For Input As #1
    Line Input #1, tRiga
    Do
            lRiga = Len(tRiga)
            iRiga = 0
                For t = 1 To lRiga
                    If Mid(tRiga, t, 1) = "," Then
                        X(rX, cX) = Mid(tRiga, iRiga + 1, t - iRiga - 1)
                        cX = cX + 1
                        iRiga = t
                    End If
                    If Mid(tRiga, t, 1) = ";" Then
                        X(rX, cX) = Mid(tRiga, iRiga + 1, t - iRiga - 1)
                        rX = rX + 1
                        cX = 1
                        iRiga = t
                    End If
                Next
        X(rX, cX) = Mid(tRiga, iRiga + 1, lRiga)
        rX = rX + 1
        cX = 1
        If EOF(1) Then Exit Do
        tRiga = ""
        Line Input #1, tRiga
        
        'End If
    Loop
    
    Close #1
    
    End Sub
  • Re: Help my please

    PS: questa è l'opzione 2 che esamina carattere per carattere della rifa del file di testo
  • Re: Help my please

    Perfetto!grazie mille ti auguro un buon proseguo!
Devi accedere o registrarti per scrivere nel forum
7 risposte