Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Csv Datei herunterladen und nach Trennzeichen in Array

Csv Datei herunterladen und nach Trennzeichen in Array
31.12.2023 00:40:53
Bulldogisl
Hallo liebe Experten..
Ich versuche aktuell bedingt durch Restriktionen unserer zentralen EDV verschiedene meiner VB Lösungen in VBA für Excel umzubauen..

Aktuell brauche ich Lösung zum Download einer Csv
aus dem Internet, wobei ich die Daten NICHT in einem Worksheet in die Zellen schreibe, .. (so eine Lösung habe ich bereits)
sondern einem bestimmten Trennzeichen nach in ein Variablen Array ablegen lassen kann..

Über eine zeitnahe Hilfestellung würde ich mich sehr freuen.. 🤗

Vielen Dank schonmal im Voraus..
Andre

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

Betreff
Datum
Anwender
Anzeige
AW: Csv Datei herunterladen und nach Trennzeichen in Array
31.12.2023 08:26:52
Alwin Weisangler
Hallo Andre,

CSV Dateien importiert man im Textformat und wertet den Trenner als X- und den Zeilenumbruch als Y-Koordinate aus.
Zu beachten ist das UTF-Format.
Beispiele dafür gibt es im Netz jede Menge per VBA. Der einzige Unterschied beim Erzeugen und Füllen eines Arrays zum Schreiben in ein Tabellenblatt ist, dass man die Schleifen 2x durchlaufen lässt.
Beim 1. Schleifendurchlauf ermittelt man die Größe des Arrays und dimensioniert es entsprechend.
Der 2. Schleifendurchlauf füllt das Array.
Ohne Beispiel-CSV kann man da kaum sinnvoll mit Code weiterhelfen.
Schau mal da:
https://www.herber.de/forum/archiv/1952to1956/1954780_Access_Datenbank_Kalkulation_CK13N_Export_SAPSystem.html

Vielleicht hilft dir das schon weiter.

Gruß Uwe


Anzeige
AW: Csv Datei herunterladen und nach Trennzeichen in Array
31.12.2023 08:43:32
Oberschlumpf
Hi Uwe

vllt ne kleine Verbesserung deiner Idee.
Ich denk, zum Füllen eines Arrays genügt 1 Schleife, nicht 2...hier mal ein exemplarisches Codebeispiel:



Sub sbFillARR()

'Beispiel bezieht sich auf die Daten in einer Tabelle mit 5 Spalten (A-E) und x Zeilen

Dim larArray(), liIdx As Integer, lloRow As Long

'hier wird die 1. und im Moment einzige Datenzeile des Arrays festgelegt
ReDim larArray(4, 0)

For lloRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'hier wird die 1. Datenzeile des Arrays mit den Inhalten aus den Spalten A-F gefüllt
larArray(0, UBound(larArray, 2)) = Range("A" & lloRow).Value
larArray(1, UBound(larArray, 2)) = Range("B" & lloRow).Value
larArray(2, UBound(larArray, 2)) = Range("C" & lloRow).Value
larArray(3, UBound(larArray, 2)) = Range("D" & lloRow).Value
larArray(4, UBound(larArray, 2)) = Range("E" & lloRow).Value
'hier wird die Anzahl Datenzeilen des Arrays immer um 1 erhöht, und somit "Platz" für weitere Daten im Array geschaffen
ReDim Preserve larArray(4, UBound(larArray, 2) + 1)
Next

'weil nach Durchlauf der 1 For/Next-Schleife das Array immer 1 Datenzeile zu viel enthält, wird hier die letzte, leere Datenzeile im Array wieder gelöscht
ReDim Preserve larArray(4, UBound(larArray, 2) - 1)

End Sub

Vielleicht spart dir dieses Bsp ja in Zukunft die eine oder andere Codezeile.

Ciao
Thorsten
Anzeige
AW: Csv Datei herunterladen und nach Trennzeichen in Array
31.12.2023 09:19:38
Alwin Weisangler
Hallo Thorsten,

im Prinzip ja. Der TO will die Ausgabe im Array erhalten, also in Gänze ohne Tabellenblatt.
Da besteht aber das Problem, dass beim Auslesen einer Zeile es passieren kann, dass je nach Format es zu unterschiedlichen Split Größen kommt. Da ist es dann besser das Array zu dimensionieren und in einer 2. Schleifen es zu füllen.
Beispielhaft wäre es so im UTF-8 Format:


Option Explicit
Dim DateiName$

'Daten aus der CSV in die Excel holen
Sub NeuanmeldungenHolen()
Dim ZeileAusImport$, row_number&, i&, iSp&, arr()
Dim objStream As Object
Dim ZeilenNummer
DateiName = Tabelle1.Cells(2, 1)
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Charset = "utf-8"
.Open
If DateiName = "" Then DateiOeffnen
If Dir(DateiName) > "" Then
.LoadFromFile (DateiName)
Else
DateiOeffnen
If DateiName = "Falsch" Then Exit Sub
.LoadFromFile (DateiName)
End If
.LineSeparator = 10
End With
row_number = 1

Do Until objStream.EOS
ZeileAusImport = objStream.ReadText(-2)
ZeilenNummer = Split(ZeileAusImport, ",")
If iSp UBound(ZeilenNummer) Then iSp = UBound(ZeilenNummer)
row_number = row_number + 1
Loop
Set objStream = Nothing
ReDim arr(1 To row_number - 1, 1 To iSp + 1)

Set objStream = CreateObject("ADODB.Stream")
With objStream
.Charset = "utf-8"
.Open
If DateiName = "" Then DateiOeffnen
If Dir(DateiName) > "" Then
.LoadFromFile (DateiName)
Else
DateiOeffnen
If DateiName = "Falsch" Then Exit Sub
.LoadFromFile (DateiName)
End If
.LineSeparator = 10
End With
row_number = 1

Do Until objStream.EOS
ZeileAusImport = objStream.ReadText(-2)
ZeilenNummer = Split(ZeileAusImport, ",")
For i = 0 To UBound(ZeilenNummer)
arr(row_number, i + 1) = Replace(ZeilenNummer(i), """", "", 1, 10)
Next i
row_number = row_number + 1
Loop
Set objStream = Nothing
End Sub

' Falls Standartpfad fehlerhaft/Datei nicht vorhanden
Private Sub DateiOeffnen()
ChDrive Left(ThisWorkbook.Path, 3)
ChDir ThisWorkbook.Path
DateiName = Application.GetOpenFilename("Excel (*.txt), *.txt")
If DateiName = "" Then Exit Sub
End Sub

um dir das Testen leicht zu machen eine entsprechende Textdatei.
https://www.herber.de/bbs/user/165755.txt

Guten Rutsch ins neue Jahr
Gruß Uwe

Anzeige
AW: Csv Datei herunterladen und nach Trennzeichen in Array
31.12.2023 09:58:36
Oberschlumpf
Hi Uwe,

alles gut...war ja auch nur n Bsp von mir.

Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige