Apertura file da vba



  • Apertura file da vba
    di Nabba72 (utente non iscritto) data: 23/02/2011

    Ciao a tutti, premetto che sono nuova e di vba non ne capisco niente.
    ho trovato una vba che converte un file txt in un file xls (listini materiale elettrico) che funziona bene. ho però un problema: la routine è preimpostata per leggere il file che si trova in c:sielsp.txt.
    vorrei chiedere come modificarla per fare in modo che si apra la finestra di dialogo "apri" e che mi permetta di selezionare il file txt in una posizione diversa e selezionabile dalla finestra di dialogo.
    qualcuno riesce ad aiutarmi???
    grazie
     
    Sub LeggiMetel()
    On Local Error Resume Next
    Dim InputData As String
    Dim Articolo As String
    Dim Descrizione As String
    Dim Prezzo As Variant
    Dim I As Integer
    
    Application.ScreenUpdating = False
    
    I = 1
    Open "c:SIELSP.txt" For Input As #1
    Do While Not EOF(1)
    Line Input #1, InputData
    Articolo = Trim(Mid$(InputData, 4, 16))
    Descrizione = Trim(Mid$(InputData, 33, 43))
    Prezzo = Val(Trim(Mid$(InputData, 98, 11))) / 100
    If I > 1 Then
    Sheets("Foglio1").Range("A" + CStr(I)).Value = Articolo
    Sheets("Foglio1").Range("B" + CStr(I)).Value = Descrizione
    Sheets("Foglio1").Range("C" + CStr(I)).Value = Prezzo
    End If
    I = I + 1
    Loop
    Close #1
    
    Application.ScreenUpdating = True
    
    End Sub



  • di Albatros54 (utente non iscritto) data: 23/02/2011

    Prova cosi.
    ciao
    albatros54
     
    Sub LeggiMetel()
    On Local Error Resume Next
    Dim InputData As String
    Dim Articolo As String
    Dim Descrizione As String
    Dim Prezzo As Variant
    Dim I As Integer
    
    Application.ScreenUpdating = False
    txtnome = Application.GetOpenFilename()
    I = 1
    Open txtnome For Input As #1 '"c:SIELSP.txt" For Input As #1
    Do While Not EOF(1)
    Line Input #1, InputData
    Articolo = Trim(Mid$(InputData, 4, 16))
    Descrizione = Trim(Mid$(InputData, 33, 43))
    Prezzo = Val(Trim(Mid$(InputData, 98, 11))) / 100
    If I > 1 Then
    Sheets("Foglio1").Range("A" + CStr(I)).Value = Articolo
    Sheets("Foglio1").Range("B" + CStr(I)).Value = Descrizione
    Sheets("Foglio1").Range("C" + CStr(I)).Value = Prezzo
    End If
    I = I + 1
    Loop
    Close #1
    
    Application.ScreenUpdating = True
    
    End Sub
    



  • di Nabba72 (utente non iscritto) data: 23/02/2011

    Fantastico!!!!!!

    grazie



  • di Albatros54 (utente non iscritto) data: 23/02/2011

    Per cosi poco.
    ciao
    albatros54