Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

csv einlesen mit "absoluten Pfad" macht Probleme

Forumthread: csv einlesen mit "absoluten Pfad" macht Probleme

csv einlesen mit "absoluten Pfad" macht Probleme
07.08.2025 12:28:14
Klaus Putterlik
Hallo mal wieder,

hoffentlich kann mir wieder jemand helfen.
ich lese eine bestimmte csv-Datei ein um die Werte dann weiter zu bearbeiten. Wenn ich den absoluten Pfad direkt eingebe, funktioniert auch alles. Ich brauche aber eine Variable (Wert ist identisch mit absolutem Pfad), dann meckert xls, dass der Pfad nicht absolut ist. Wie kann das umgangen werden?

um diese Zeile geht es im Makro:
    ActiveWorkbook.Queries.Add Name:="top_cover_results", Formula:= _

"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents("" & csv & ""),[Delimiter="";"", Columns=27, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumn" & _
"Types(#""Promoted Headers"",{{""Ergebnis-ID"", Int64.Type}, {""Kurve verfügbar"", type text}, {""Sitzung"", type datetime}, {""Testparameter ID"", Int64.Type}, {""Name"", type text}, {""Testtyp"", type text}, {""Werkzeugtyp"", type text}, {""Verbundene Geräte"", type text}, {""Datum/Zeit"", type datetime}, {""Status"", type text}, {""Einheit"", type text}, {""Drehmo" & _
"ment"", Int64.Type}, {""Nominal Drehmoment"", Int64.Type}, {""Winkelschwellwert"", Int64.Type}, {""Min Drehmoment"", Int64.Type}, {""Max Drehmoment"", Int64.Type}, {""Winkel"", Int64.Type}, {""Spitzenwert Drehmoment"", Int64.Type}, {""Winkel bei Spitzenwert Drehmoment"", Int64.Type}, {""Drehmoment max. Winkel"", Int64.Type}, {""Max. Winkel"", Int64.Type}, {""Nominal" & _
" Winkel"", Int64.Type}, {""Min. Winkel"", Int64.Type}, {""Max. Winkel_1"", Int64.Type}, {""VIN"", type text}, {""Seq. Ergebnis"", Int64.Type}, {""Hinweis Kurve"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""


wenn ich bei "" & csv & "" den Pfad ("G:\...") direkt angebe gibt es kein Problem, mit der Variablen "csv" dann aber doch bei .Refresh BackgroundQuery:=False (kein absoluter Pfad???)

Public Sub top_cover()


Dim i As Long
Dim DUT1 As String
Dim search_dut As Range
Dim search_partname As Range
Dim screw_ident As String
Dim path As String
Dim csv As String
Dim search_1 As String
Dim Q
Dim objNetzwerk As Object

For Each Q In ActiveWorkbook.Queries
If Q.Name = "top_results" Then Q.Delete
Next

DUT1 = "DUT " & DUT
search_1 = Sheets("identification_table").Range("B2").Value
Sheets("identification_table").Range("B3").Value = "top_cover"
Worksheets("identification_table").Calculate
path = Sheets("identification_table").Range("B5").Value
path = Replace(path, "\\xxx\xxx\xxx\", "")
csv = "G:\yyy\" & path

Call CreateDrive

ActiveWorkbook.Queries.Add Name:="top_results", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents("" & csv & ""),[Delimiter="";"", Columns=27, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumn" & _
"Types(#""Promoted Headers"",{{""Ergebnis-ID"", Int64.Type}, {""Kurve verfügbar"", type text}, {""Sitzung"", type datetime}, {""Testparameter ID"", Int64.Type}, {""Name"", type text}, {""Testtyp"", type text}, {""Werkzeugtyp"", type text}, {""Verbundene Geräte"", type text}, {""Datum/Zeit"", type datetime}, {""Status"", type text}, {""Einheit"", type text}, {""Drehmo" & _
"ment"", Int64.Type}, {""Nominal Drehmoment"", Int64.Type}, {""Winkelschwellwert"", Int64.Type}, {""Min Drehmoment"", Int64.Type}, {""Max Drehmoment"", Int64.Type}, {""Winkel"", Int64.Type}, {""Spitzenwert Drehmoment"", Int64.Type}, {""Winkel bei Spitzenwert Drehmoment"", Int64.Type}, {""Drehmoment max. Winkel"", Int64.Type}, {""Max. Winkel"", Int64.Type}, {""Nominal" & _
" Winkel"", Int64.Type}, {""Min. Winkel"", Int64.Type}, {""Max. Winkel_1"", Int64.Type}, {""VIN"", type text}, {""Seq. Ergebnis"", Int64.Type}, {""Hinweis Kurve"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=top_results;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [top_results]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "top_results"
.Refresh BackgroundQuery:=False
End With
ActiveWorkbook.Queries("top_results").Delete
ActiveSheet.Name = "top_results"

For i = 1 To Cells(Rows.Count, 12).End(xlUp).Row
If IsNumeric(Range("L" & i)) Then
Range("L" & i) = Range("L" & i) / 100
End If
Next

'....

Sheets("identification_table").Select
Range("B2").Select
Sheets("top_results").Delete

End Sub



Vielen Dank für eure Hilfe
Gruß Klaus
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
07.08.2025 13:08:38
Eifeljoi 5
Hallo

Ohne mir dein Marko an zuschauen.
Warum müssen viele den Weg über VBA machen, verstehe ich nicht.
Heutzutage gibt es nicht leichteres eine csv oder txt oder json einzulesen mit Power Query, dies nur als Info
AW: csv einlesen mit "absoluten Pfad" macht Probleme
07.08.2025 18:17:35
Luschi
Hallo Eifeljoi 5,

Ohne mir dein Marko an zuschauen.

- Dein Fehler
- hier wird per Vba eine PQ-Abfrage erzeugt!

Gruß von Luschi
aus klein-Paris

Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
07.08.2025 13:22:23
daniel
Hi

kleiner Tipp zur Fehlerfindung:

weise den ganze Text erstmal einer Variablen zu und das in beiden Varianten (direkteingabe und nicht funktionierender versuch):

also
x = "let" & .... und dann alles ,was du bei .Formula zuweist
y = "let" & .... und dann alles ,was du bei .Formula zuweist

dann lässt du dir x und y ausgeben und kannst vergleichen, ob wirklich in beiden Variablen der selbe Text stehtl.

was mir noch so auffällt:
mit ("" & csv & "") schreibst du nicht die Variable csv in den String, sondern den Text & csv &
um die Variable in den Text zu bekommen fehlt hier noch das anführungszeiche, dass den festen Text an dieser stelle beendet.
probiere mal: (""" & csv & """)

beachte:
zwei aufeinander folgende Anführungszeichen sind immer teil des fix-Textes, nur ein einzelnes Anführungszeichen beendet den Fixtext (um dann beispielsweise eine Variable anzuknüpfen)
ja es wir unübersichtlich, wenn der Text direkt nach einem zum Text gehörigen Anführungszeichen beendet werden soll, aber da muss man durch

Gruß Daniel
Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
07.08.2025 18:14:25
Luschi
Hallo Klaus,

bei mir klappt das so:
    csv = "F:\Daten\Downloads\6\PQ_2\Daten\Test - blabla.csv"

ActiveWorkbook.Queries.Add Name:="top_cover_results", Formula:= _
"let" & Chr(13) & Chr(10) & " Source = Csv.Document(File.Contents(" & Chr(34) & csv & Chr(34) & "),[Delimiter="";"", Columns=27, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumn" & _
"Types(#""Promoted Headers"",{{""Ergebnis-ID"", Int64.Type}, {""Kurve verfügbar"", type text}, {""Sitzung"", type datetime}, {""Testparameter ID"", Int64.Type}, {""Name"", type text}, {""Testtyp"", type text}, {""Werkzeugtyp"", type text}, {""Verbundene Geräte"", type text}, {""Datum/Zeit"", type datetime}, {""Status"", type text}, {""Einheit"", type text}, {""Drehmo" & _
"ment"", Int64.Type}, {""Nominal Drehmoment"", Int64.Type}, {""Winkelschwellwert"", Int64.Type}, {""Min Drehmoment"", Int64.Type}, {""Max Drehmoment"", Int64.Type}, {""Winkel"", Int64.Type}, {""Spitzenwert Drehmoment"", Int64.Type}, {""Winkel bei Spitzenwert Drehmoment"", Int64.Type}, {""Drehmoment max. Winkel"", Int64.Type}, {""Max. Winkel"", Int64.Type}, {""Nominal" & _
" Winkel"", Int64.Type}, {""Min. Winkel"", Int64.Type}, {""Max. Winkel_1"", Int64.Type}, {""VIN"", type text}, {""Seq. Ergebnis"", Int64.Type}, {""Hinweis Kurve"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""

Gruß von Luschi
aus klein-Paris
Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
08.08.2025 10:07:27
Klaus
Hallo Luschi,

das funktioniert auch bei mir perfekt.
Vielen Dank auch an alle anderen Vorschläge :-)

Kannst du mir auch bitte noch sagen, wie ich diesen Teil ändern kann?
ActiveWorkbook.Queries.Add Name:="top_results", Formula:=....

Anstatt hier "top_results" zu verwenden, würde ich auch hier gerne eine Variable verwenden, da ich insgesamt 12 csv-Dateien einlese.

evtl. so ???

dim results as string
results = "top_results"

ActiveWorkbook.Queries.Add Name:=" & Chr(34) & csv & Chr(34) & ", Formula:=....

Viele Grüße
Klaus
Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
08.08.2025 10:42:25
daniel
Hi

hier reicht:
dim results as string

results = "top_results"

ActiveWorkbook.Queries.Add Name:=results, Formula:=....


versuche mal den Unterschied zu verstehen:
a) Anführungszeichen, die festen Text im Code Kennzeichen
b) Anführungszeichen, die Teil des benötigten Textes sind.
Variablen dürfen nie innerhalb von Anführungszeichen stehen.

Gruß Daniel
Anzeige
AW: csv einlesen mit "absoluten Pfad" macht Probleme
08.08.2025 15:59:48
Klaus
Vielen Dank Daniel und Luschi

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige