Clever-Excel-Forum

Normale Version: Makro-Problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich bin neu hier, weil ich mit meinem Latein gerade an eine Grenze stoße. Bin aber auch wahrlich kein Experte Wink

Ich möchte Daten aus einer CSV-Datei importieren und später diese durch erneute Ausführung des Makros die Daten aktualisieren.
Also habe ich mir ein Makro geschrieben, der die Daten aus der CSV-Datei rüberholt. Wenn ich allerdings erneut das Makro ausführe bekomme ich folgende Fehlermeldung:

Laufzeitfehler '-2147024809 (80070057)
Eine Abfrage mit dem Namen "fills (4)" ist bereits vorhanden.

Die auszulesende CSV-Datei heißt fills.csv

Wo liegt der Fehler?

Vielen Dank @ll!
Hola,

ich könnte mir vorstellen dass es bei Problemen mit dem Makro von Vorteil wäre, das Makro zu kennen.
Ansonsten hilft nur die Fehlermeldung zu googeln.
Gruß,
steve1da
Durchs probieren bin ich jetzt bei fills(10) angelangt Huh  woher kommt der Name fills (10) ? Was wird da immer wieder mal weiter gezählt, aber wenn ich das Makro ein 2. mal drüber laufen lasse nicht?

Herzlichen Dank für Deine Antwort!

 Sub Tabelle()
'
' Tabelle Makro
'

'
    ActiveWorkbook.Queries.Add Name:="fills (10)", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Csv.Document(File.Contents(""C:\fills.csv""),[Delimiter="","", Columns=11, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Typ ändern"" = Table.TransformColumnTypes(Quelle,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}, {""Column4"", type text}, {""Column5"", type text}, {""Column6" & _
        """, type text}, {""Column7"", type text}, {""Column8"", type text}, {""Column9"", type text}, {""Column10"", type text}, {""Column11"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Typ ändern"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""fills (10)"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [fills (10)]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "fills__10"
        .Refresh BackgroundQuery:=False
    End With
    Application.CommandBars("Queries and Connections").Visible = False
End Sub
Zitat:Ich möchte Daten aus einer CSV-Datei importieren


Warum per Makro und nicht per PowerQuery (Tab Daten - Aus Text/csv).

Zum Aktualisieren später einfach Rechtsklick -> Aktualisieren.
Sehr gern wenn ich wüsste wie. Bin da eher Anfänger!

Das ist ja das Tool mit dem ich quas ja auch das Makro aufgezeichnet habe und die Daten ins Excel geholt habe.
Wo mache ich dann den Rechtsklick um eine neuere Version der csv-Datei zu importiere?


Vielen Dank für Deine Antwort!
Hallo,

du erstellst mit dem Makro immer wieder neue Abfragen.

Richte mit PQ eine Abfrage ein, die kannst Du dann per Makro aktualisieren.

z. B. so:
ActiveWorkbook.Connections("fills").Refresh

Das kannst Du aber auch mit dem Makrorekorder aufzeichnen.
Ich habs hinbekommen.

Ich danke Euch für Eure Antworten - das ist ja easy, ja wenn man weiß, dass es so geht Wink

Herzlichen Dank Euch!!!!!!!
Du kannst auch in den Abfrageeigenschaften eine automatische Aktualisierung einrichten, z.B. beim Öffnen der Datei.


[attachment=40921]