Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Importieren einer .csv-Datei - Verzeichnis als Variable

Importieren einer .csv-Datei - Verzeichnis als Variable
31.07.2024 07:53:21
Rainer Pfister
Hallo liebe Mitglieder,

ich sitze hier vor einem Problem und sehe vermutlich den Wald vor lauter Bäumen nicht ... und deshalb brauche ich eure Hilfe.

Das von mir erstellte Makro funktioniert zwar, allerdings möchte ich hier anstatt des hart codierten Verzeichnispfades eine Variable mit dem Verzeichnis verwenden, die zuvor entsprechend bestückt wurde. Hier soll die Variable eingefügt werden:

ActiveWorkbook.Queries.Add Name:="2 (2)", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Csv.Document(File.Contents(""C:\Users\RainerPfister\Documents\ABC_Setup\_TBA run\2.csv""),[Delimiter="","", Columns=15, Encoding=1252, QuoteStyle=QuoteStyle.Csv])," & Chr(13) & "" & Chr(10) & " #""Höher gestufte Header"" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(#""Höher gestufte Header"",{{""Phas" & _
"e"", type text}, {""Task ID"", type text}, {""Task Title"", type text}, {""Priority"", Int64.Type}, {""Description"", type text}, {""Completion Status"", type text}, {""Tags"", type text}, {""Problem ID"", type text}, {""Problem Title"", type text}, {""Risk Rating"", Int64.Type}, {""Business Unit"", type text}, {""Application"", type text}, {""Project"", type text}," & _
" {""Project Attributes"", type text}, {""Issue Tracker Tickets"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2 (2)"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [2 (2)]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_2__2"
.Refresh BackgroundQuery:=False
End With

Lese ich den aktuellen Pfad aus und versuche irgendwie meine Variable in den fett markierten Bereich zu kopieren, wird diese nicht als Variable erkannt. Ich habe mit den Anführungszeichen gespielt, "&" Zeichen verwendet, etc. ... ohne Erfolg.

Kann mir jemand sagen, wie ich die Variable mit dem ausgelesenen Verzeichnis hier implementieren kann?

Vielen Dank im Voraus für eure Hilfe.

Rainer :-)
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Importieren einer .csv-Datei - Verzeichnis als Variable
31.07.2024 13:42:06
schauan
Hallöchen,

im Prinzip so:

Variable=xxx
..." & Variable & " ...

Du beendest den ersten Teilstring, fügst die Variable mit & hinzu, anschließend wieder ein & und dann der restliche String. Du musst dann nur schauen, wie viele Anführungszeichen Du benötigst :-)
Anzeige
AW: Importieren einer .csv-Datei - Verzeichnis als Variable
01.08.2024 14:09:05
Rainer Pfister
Hallo schaun,

vielen Dank für diesen ersten wertvollen Schritt. Das Einfügen der Variable funktioniert soweit.

Warum auch immer: ich erhalte jetzt eine weitere, andere Fehlermeldung im nächsten Schritt, die ich zuvor nicht hatte - und zwar hier:

ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2 (2)"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [2 (2)]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_2__2"
.Refresh BackgroundQuery:=False
End With

Das Programm bricht mit der Fehlermeldung

'Laufzeitfehler' 1004:
Expecting object to be local

ab. Keine Ahnung, weshalb. Ich habe auch zu Beginn des Makros und außerhalb des "Sub ... End Sub" die Anweisung "Option Explicit" eingefügt. Das ändert jedoch gar nichts.

Hast Du eine Idee, was das ist??

Vielen Dank und viele Grüße

Rainer
Anzeige
AW: Importieren einer .csv-Datei - Verzeichnis als Variable
01.08.2024 16:09:00
schauan
Hallo Rainer,

erste Möglichkeit - die Zeile einfach mal auskommentieren, sodass sie nicht ausgeführt wird.
AW: Importieren einer .csv-Datei - Verzeichnis als Variable
31.07.2024 16:45:46
Yal
Hallo Rainer,

Du verwendest VBA, um eine Power Query Abfrage zu erzeugen. Das ist nicht notwendig, da einst die Query erzeugt ist, kann sie jederzeit aktualisiert werden. Schaue im Menü "Daten", "Abfragen und Verbindungen", dann wird deine Query sichtbar.
Mit Rechtsklick auf der Query (Auflistung rechts) kommst Du in den Bearbeitungsmodus. Dort kannst Du die Query umgestalten, wie es dir lustig ist. Du musst dich dann nur in Power Query einarbeiten, was wesentlich einfacher, logischer und zukunftsorientierter als VBA.

Es müsste nur der Pfad angepasst werden. Die Lösung der abweichende Pfad kann mit einer benannte Zelle gelöst werden. Benenne eine Zelle mit "Pfad" und gebe den Pfad ein.
Andere dann in dem Schritt "Quelle" vom PQ-Abfrage:
= Csv.Document(File.Contents("C:\Users\RainerPfister\Documents\ABC_Setup\_TBA run\2.csv"),[Delimiter=",", Columns=15, Encoding=1252, QuoteStyle=QuoteStyle.Csv]),

in
Quelle = Csv.Document(File.Contents(Excel.CurrentWorkbook(){[Name="Pfad"]}[Content]{0}[Column1] & "\2.csv"),[Delimiter=",", Columns=15, Encoding=1252, QuoteStyle=QuoteStyle.Csv])

(in der Abfrage. im VBA müssen die " gedoppelt werden)

VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige