Importazione dati da file csv in cartella a scelta

Buongiorno,
Ho creato/copiato/adattato una macro che importa in excel, secondo la formattazione a me necessaria, i dati contenuti in file csv (dati meteo). Questi file csv sono raggruppati in cartelle aventi il nome delle stazioni meteo di riferimento (es. "Ancona Falconara"), tutte le cartelle delle stazioni meteo sono contenute in una cartella denominata "Dati Meteo". Non riesco a modificare la macro in modo da poter scegliere, tramite inputbox ad esempio, la stazione meteo (e quindi la sua cartella) di cui importare i file csv. Traduco: vorrei poter scegliere, al momento dell'apertura del file excel contenente la macro, la stazione meteo della quale caricare i dati.
Grazie in anticipo a chi vorrà aiutarmi.

Riporto di seguito la macro utilizzata:

Sub ImportaDatiMeteo()

On Error GoTo RigaErrore

 

    Dim objFSO As Object

    Dim objFolder As Object

    Dim objFile As Object

    Dim sPath As String

    

    With Application

        .ScreenUpdating = False

    End With

    

    sPath = ActiveWorkbook.Path & "\" 'oppure ho inserito il percorso esatto della cartella contenete i file

    

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFolder = objFSO.GetFolder(sPath)

 

 

    For Each objFile In objFolder.Files

        If Right(objFile.Name, 3) = "csv" Then

            ThisWorkbook.Worksheets.Add

            ActiveSheet.Name = objFile.Name

       

           With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sPath & objFile.Name, _

                Destination:=Range("B2"))

                .Name = "Cartel2"

                .FieldNames = True

                .RowNumbers = False

                .FillAdjacentFormulas = False

                .PreserveFormatting = True

                .RefreshOnFileOpen = False

                .RefreshStyle = xlInsertDeleteCells

                .SavePassword = False

                .SaveData = True

                .AdjustColumnWidth = True

                .RefreshPeriod = 0

                .TextFilePromptOnRefresh = False

                .TextFilePlatform = 1250

                .TextFileStartRow = 1

                .TextFileParseType = xlDelimited

                .TextFileTextQualifier = xlTextQualifierDoubleQuote

                .TextFileConsecutiveDelimiter = False

                .TextFileTabDelimiter = False

                .TextFileSemicolonDelimiter = True

                .TextFileCommaDelimiter = False

                .TextFileSpaceDelimiter = False

                .TextFileColumnDataTypes = Array(2, 4, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 2)

                .TextFileTrailingMinusNumbers = True

                .Refresh BackgroundQuery:=False

End With

    Rows("1:40").Select

    Selection.RowHeight = 20

    Range("B2:G2").Select

    Selection.Font.Bold = True

    Rows("1:40").Select

    With Selection

        .HorizontalAlignment = xlGeneral

        .VerticalAlignment = xlCenter

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .MergeCells = False

            End With

        End If

     Next

    

RigaChiusura:

     Set objFile = Nothing

     Set objFolder = Nothing

     Set objFSO = Nothing

     With Application

         .ScreenUpdating = True

     End With

     Exit Sub

   

RigaErrore:

     MsgBox Err.Number & vbNewLine & Err.Description

     Resume RigaChiusura

 

End Sub

 

Informazioni domanda


Ultimo aggiornamento febbraio 27, 2018 Visualizzazioni 1.061 Si applica a:
Risposta
Traduco: vorrei poter scegliere, al momento dell'apertura del file excel contenente la macro, la stazione meteo della quale caricare i dati.
Grazie in anticipo a chi vorrà aiutarmi.

 


Nell'esempio qui sotto le Cartelle (Directories) Bologna Borgo Panigale, Milano Linate, Milano Malpensa, ecc. si trovano nella Cartella (Directory) Prova. Se digiti nella InputBox il nome della cartella e se la cartella esiste, ti viene segnalato da una MsgBox. Al posto della MsgBox metterai il codice da eseguire per quella determinata Cartella (Directory):

 

Public Sub m()
    Dim v As Variant
    Dim s As String
    v = Application.InputBox("Inserire il nome della stazione")
    If v = False Or v = "" Then Exit Sub
    s = "C:\Prova\" & v
    If Dir(s, vbDirectory) <> "" Then
        MsgBox "Stazione: " & v '<<==== qui il codice da eseguire
    Else
        MsgBox "Stazione non trovata."
    End If
End Sub

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.