Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Datenimport csv OHNE Datenverbindung

Datenimport csv OHNE Datenverbindung
07.02.2019 11:11:54
Burak
Moin,
also ich importiere seit geraumer Zeit verschiedene csv-Dateien per Makro.
Da mein ganzes Workbook immer langsamer wurde, habe ich etwas recherchiert und vermute es liegt daran dass er inzwischen über 1000 Datenverbindungen aufgebaut hat.
Das Importmakro habe ich irgendwo im Internet gefunden und angepasst. Aber eine Datenverbindung möchte ich definitiv nicht haben.
Also kann man in folgendem Code entweder verhindern, dass Datenverbindungen(Query Tables) aufgebaut werden oder hinzufügen, dass am Ende alle Datenverbindungen gelöscht werden?
'Import anhand Datum
For i = tage To 0 Step -1
EndDatum = EndDatum - i
'Enddatum umwandeln für Import
endjahr = Right(EndDatum, 4)
endmonat = Mid(EndDatum, 4, 2)
endtag = Left(EndDatum, 2)
'umgewandeltes Enddatum zusammen setzen
enddatum2 = endjahr & endmonat & endtag
'Linien 1-4
For k = 1 To linien
'Import einer leeren Datei
If FileLen(rehmpfad & k & "'_'" & enddatum2 & "'.csv") = 0 Then
'Import einer nicht leeren Datei
Else
Set wsroh = ActiveWorkbook.Sheets("R" & k)
'Zeilen zählen
Zeilenzahl = ActiveWorkbook.Sheets("R" & k).Cells(1, rohmbc).CurrentRegion.Rows.Count
'Dateipfad und Ziel für Import
With wsroh.QueryTables.Add(Connection:="TEXT;" & rehmpfad & k & "'_'" & enddatum2 & "'. _
csv", Destination:=wsroh.Cells(Zeilenzahl + 1, rohmbc))
'Import als Textformatierung
.TextFileParseType = xlDelimited
'Spaltentrennung in Quelldatei per Komma
.TextFileCommaDelimiter = True
'Aktualisieren der externen Datenverbindung
.Refresh
End With
End If
Next k
'Nächster Tag
EndDatum = EndDatum + i
Next i
bzw explizit:

With wsroh.QueryTables.Add(Connection:="TEXT;" & rehmpfad & k & "'_'" & enddatum2 & "'.csv",  _
Destination:=wsroh.Cells(Zeilenzahl + 1, rohmbc))
'Import als Textformatierung
.TextFileParseType = xlDelimited
'Spaltentrennung in Quelldatei per Komma
.TextFileCommaDelimiter = True
'Aktualisieren der externen Datenverbindung
.Refresh
End With
Vielen Dank im Voraus!
Viele Grüße
Burak

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport csv OHNE Datenverbindung
07.02.2019 11:16:35
Daniel
Hallo Burak,
schau dir das mal an:
https://docs.microsoft.com/de-de/office/vba/api/excel.workbook.breaklink?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dde-DE%26k%3Dk(vbaxl10.chm199198)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue
Gruß
Daniel
BreakLink-Methode nicht verstanden :(
07.02.2019 11:45:19
Burak
Ok ich verstehe den Link nur zur Hälfte, da
1. von einer Konvertierung die Rede ist (wobei im Code von "Break" die Rede ist, was eig mehr nach einem Trennen als konvertieren klingt.
2. der Code läuft in Fehler "Typen unverträglich" bei
ActiveWorkbook.BreakLink Name:=astrLinks(1), Type:=xlLinkTypeExcelLinks
Dennoch danke ich dir vielmals :)
Anzeige
AW: BreakLink-Methode nicht verstanden :(
07.02.2019 11:58:03
Daniel
Versuche am Ende deines Codes dieses:
Sub UseBreakLink()
Dim i As Long
Dim astrLinks As Variant
astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
For i = 1 To UBound(astrLinks)
ActiveWorkbook.BreakLink Name:=astrLinks(i), Type:=xlLinkTypeExcelLinks
Next i
End Sub
Das macht genau was du willst, nämlich die Links entfernen und nur die Werte der Zellen beibehalten.
astrLinks = Leer
07.02.2019 12:21:30
Burak
Erneut "Typen unverträglich" diesmal beim Schleifenzähler, da er sagt die Variable astrLinks ist leer, aber unter "Daten - Verbindungen" sehe ich jede Menge Verbindungen.
Wo liegt das Problem?
LG
Anzeige
AW: Datenimport csv OHNE Datenverbindung
07.02.2019 12:06:57
PeterK
Hallo
Vorsicht: löscht ALLE Verbindungen

Dim qt As QueryTable
Dim ws As Worksheet
For each ws in ActiveWorkbook.worksheets
For Each qt In ws.QueryTables
If qt.Refreshing Then qt.CancelRefresh
qt.Delete
Next
Next

Funktioniert top! Danke :)
07.02.2019 12:24:17
Burak
Das funktioniert einwandfrei und auch ohne andere Makros!
Super Danke dir!!!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige