Requète pour importer un fichier .ini

Hello !

J'essaie actuellement d'importer un fichier ini via vba.

Je me suis inspiré de l'assistant macro, mais manifestement je me suis loupé

L'idée est d'importer des fichiers .ini pour pouvoir les modifier via Excel avant de les ré-enregistrer. Le nom du fichier et son chemin se trouvent dans deux cellules respectives (B1 et B2) à remplir par l'opérateur.

Sub lecture()

    'Charger la librairie Microsoft DAO 3.6 Object Library pour QueryDef

    Call Nettoyage_requetes

    Dim chemin$, nom$, CONFIG_FILE$, nompur$
    Dim qry As DAO.QueryDef

    ThisWorkbook.Sheets("Edition").Select

    With ThisWorkbook.Sheets("Configuration")
        chemin = .Range("B1").Value
        If Var = Right(chemin, 1) <> "\" Then
            chemin = chemin & "\"
        End If

        nom = .Range("B2").Value
        If Var = Right(nom, 4) <> ".ini" Then
            nom = nom & ".ini"
        End If
        nompur = Left(nom, Len(nom) - 4)
    End With
    CONFIG_FILE = chemin & nom

    ActiveWorkbook.Queries.Add Name:=nompur, Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(CONFIG_FILE),[Delimiter=""="", Columns=2, Encoding=1252])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Type modifié"""
    With ThisWorkbook.Sheets("Edition").ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=nompur" _
        , Destination:=ThisWorkbook.Sheets("Edition").Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [nompur]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "larequete"
        .Refresh BackgroundQuery:=False
    End With
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

L'erreur est sur les 2 dernière ligne (.Refresh).

Le Call Nettoyage appelle un sub chargé de dégager les précédentes requêtes (et fonctionne bien).

Ci-joint un fichier .ini pour exemple.

37conf-valide.ini (80.00 Octets)
Rechercher des sujets similaires à "requete importer fichier ini"