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

Bestimmte CSV-Dateien in Arbeitsmappe importieren

Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 11:59:11
Lukas
Hallo,
Ich bin VBA-Anfänger und bräuchte einmal eure Hilfe. Von einem Wegmessprogramm wird je Messung eine Reihe von CSV-Dateien erzeugt, die in einem Oberverzeichnis für die jeweilige Messung abgelegt wird. Von diesen Dateien werden stets die vier gleichen zur Auswertung herangezogen, d.h. sie sollen nacheinander in eine Arbeitsmappe auf eine Seite je CSV-Datei importiert werden. Dabei soll die Seite nach der CSV-Datei umbenannt werden, aus der ihre Daten stammen.
Meine Fragen wären daher:
1. Ist es möglich ohne irgendwelche Zusatz-Programme meinen Code so umzuschreiben, dass ich nur das Verzeichnis auswählen muss und von dort werden direkt die vier CSV-Dateien(Messdatei1, Messdatei2, Messdatei3, Messdatei4) in meine Mappe importiert? Gleichzeitig wäre es optimal, wenn diese Dateien jeweils auf einem eigenen Tabellenblatt landen, was das ganze nicht wirklich einfacher macht... Wenn ja, wie wäre das umzusetzen? (Habe bereits einige Stunden gegoogelt)
2. Wie bekomme ich es hin, dass in meiner Arbeitsmappe die Seiten nach der jeweiligen CSV-Datei benannt werden?
Danke schonmal im Voraus für jegliche Hilfen!
PS: Der Kern des Programms ist eine automatische Auswertung der Messergebnisse, die sich dann in einer zentralen Mappe befinden. Diesen Teil habe ich soweit schon fertig gestellt, ich habe auch schon ein Code-Stück zum importieren einer CSV-Datei gefunden, das soweit bei mir funktioniert:
Sub ImportCSVFile()
Dim xFileName As Variant
Dim Rg As Range
Dim xAddress As String
xFileName = Application.GetOpenFilename("CSV File (*.csv), *.csv", , "Kutools for Excel", ,  _
False)
If xFileName = False Then Exit Sub
On Error Resume Next
Set Rg = Application.InputBox("please select a cell to output the data", "Kutools for Excel" _
, Application.ActiveCell.Address, , , , , 8)
On Error GoTo 0
If Rg Is Nothing Then Exit Sub
xAddress = Rg.Address
With ActiveSheet.QueryTables.Add("TEXT;" & xFileName, Range(xAddress))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 12:42:38
Rudi
Hallo,
ich bevorzuge diese Methode:
Sub CSV_Import()
Dim vROH, arrDaten(), vTMP, i As Long, j As Long
Dim strPfad As String, strDatei As String
Const cstrDELIM As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
strPfad = .SelectedItems(1)
End If
End With
If strPfad  "" Then
If Right(strPfad, 1)  "\" Then strPfad = strPfad & "\"
strDatei = Dir(strPfad & "*.csv", vbNormal)
Do While strDatei  ""
Open strPfad & strDatei For Input As #1  'Dateiname anpassen
vROH = Input(LOF(1), 1)
Close #1
vROH = Split(vROH, vbCrLf)
ReDim arrDaten(UBound(vROH), UBound(Split(vROH(LBound(vROH)), cstrDELIM)))
For i = LBound(vROH) To UBound(vROH)
vTMP = Split(vROH(i), cstrDELIM)
For j = LBound(vTMP) To UBound(vTMP)
arrDaten(i, j) = vTMP(j)
Next
Next
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
.Name = Left(strDatei, Len(strDatei) - 4)
End With
strDatei = Dir
Loop
End If
End Sub

Gruß
Rudi
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 13:13:30
Lukas
Hallo Rudi,
danke für die schnelle Antwort! Ich kann deinen Code soweit nachvollziehen und wollte ihn gerade ausprobieren, jedoch schmeißt der Debugger an der Stelle
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
.Name = Left(strDatei, Len(strDatei) - 4)
einen Laufzeitfehler...
Außerdem kann ich in dem Fenster, in dem ich normalerweise die zu öffnende Datei anwähle, nur den gesamten Ordner auswählen. Wahrscheinlich habe ich mich oben nicht richtig ausgedrückt was das angeht, aber jeder Ordner mit den Messdaten besteht aus 20 CSV-Dateien, von denen ich aber nur 4 zur Auswertung brauche... diese tragen immer den gleichen Namen (daher das Beispiel mit Messdatei1, Messdatei2, Messdatei3 und Messdatei4).
Freundliche Grüße
Lukas
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 13:30:37
Rudi
Hallo,
nächster Versuch
Sub CSV_Import()
Dim vROH, arrDaten(), vTMP, i As Long, j As Long
Dim strPfad As String, vntDateien, vntDatei
Const cstrDELIM As String = ";" 'Trennzeichen
vntDateien = Array("Datei1.csv", "Datei2.csv", "Datei3.csv", "Datei4.csv")
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
strPfad = .SelectedItems(1)
End If
End With
If strPfad  "" Then
If Right(strPfad, 1)  "\" Then strPfad = strPfad & "\"
For Each vntDatei In vntDateien
Open strPfad & vntDatei For Input As #1  'Dateiname anpassen
vROH = Input(LOF(1), 1)
Close #1
vROH = Split(vROH, vbCrLf)
ReDim arrDaten(UBound(vROH), UBound(Split(vROH(LBound(vROH)), cstrDELIM)))
For i = LBound(vROH) To UBound(vROH)
vTMP = Split(vROH(i), cstrDELIM)
For j = LBound(vTMP) To UBound(vTMP)
arrDaten(i, j) = vTMP(j)
Next
Next
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
.Name = Left(vntDatei, Len(vntDatei) - 4)
End With
Next vntDatei
End If
End Sub

Gruß
Rudi
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 13:58:40
Lukas
Hallo,
das sieht soweit erstmal ganz gut aus, Dankeschön! Habe die Dateinamen angepasst,jedoch erkennt er später beim Aufruf von vntDatei nicht die tatsächlichen Dateinamen, da es so ausschaut, als wäre immernoch Datei1.csv hinterlegt...
Sub CSV_Import()
Dim vROH, arrDaten(), vTMP, i As Long, j As Long
Dim strPfad As String, vntDateien, vntDatei
Const cstrDELIM As String = ";" 'Trennzeichen
vntDateien = Array("C2-Sample_Meas_DAC_DIE1.csv",
"C2-Sample_Meas_DAC_DIE2.csv",
"C2-Sample_MeasPost_DAC_DIE1.csv",
"C2-Sample_MeasPost_DAC_DIE2.csv")
  With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
strPfad = .SelectedItems(1)
End If
End With
If strPfad  "" Then
If Right(strPfad, 1)  "\" Then strPfad = strPfad & "\"
For Each vntDatei In vntDateien
 Open strPfad & vntDatei For Input As #1  'Dateiname anpassen
      vROH = Input(LOF(1), 1)
Close #1
vROH = Split(vROH, vbCrLf)
ReDim arrDaten(UBound(vROH), UBound(Split(vROH(LBound(vROH)), cstrDELIM)))
For i = LBound(vROH) To UBound(vROH)
vTMP = Split(vROH(i), cstrDELIM)
For j = LBound(vTMP) To UBound(vTMP)
arrDaten(i, j) = vTMP(j)
Next
Next
With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
.Name = Left(vntDatei, Len(vntDatei) - 4)
End With
Next vntDatei
End If
End Sub

Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
16.10.2018 14:26:15
Lukas
Okay, habe das Problem mit vntDatei erstmal behoben, jetzt ist aber wieder das obengenannte Problem mit dem Dateiumbenennen da:

With Worksheets.Add
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
        .Name = Left(vntDatei, Len(vntDatei) - 4)
End With

AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
17.10.2018 12:41:01
Rudi
bei mir geht das.
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
17.10.2018 15:32:07
Lukas
Vielleicht weiß dann ja jemand anderes weiter, auf jeden Fall ertsmal ein dickes Dankeschön, Rudi!
Bei der Zeile
.Cells(1, 1).Resize(UBound(arrDaten), UBound(arrDaten, 2)) = arrDaten
bekomme ich einen "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler"
Kennt das Problem jemand?
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
17.10.2018 16:08:04
Rudi
Hallo,
du hast vom Umbenennen gesprochen.
Der jetzt beschriebene Fehler deutet darauf hin, das das Array leer ist. Geh den Code mal im Einzelschritt durch.
Gruß
Rudi
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
18.10.2018 09:41:55
Lukas
Hallo,
also wie es aussieht scheint sich das Array zu füllen, also es liest duchgehend Daten aus der Datei aus. Die Variable i liegt am Ende bei 1, j bei 505. In dem Moment in dem der Fehler auftritt, wird mir im Abschnitt

For i = LBound(vROH) To UBound(vROH)
vTMP = Split(vROH(i), cstrDELIM)
For j = LBound(vTMP) To UBound(vTMP)
arrDaten(i, j) = vTMP(j)
Next
Next

bei vROH(i) angezeigt, dass der Index außerhalb des gültigen Bereichs liegen würde.
Falls dir das irgendwie weiterhilft: Zum Zeitpunkt des Fehlers ist

UBound(arrDaten)
=0
und
UBound(arrDaten, 2)
=504.
Ich hoffe dass du damit irgendwas anfagen kannst...
Gruß Lukas
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
18.10.2018 12:00:48
Rudi
dann lade doch mal eine csv hoch.
Evtl. vorher in .txt umbenennen
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
18.10.2018 13:00:33
Lukas
Okay, habe ich:
https://www.herber.de/bbs/user/124729.txt
Sollte sich über .csv einfach wieder in das Ursprungsformat umwandeln lassen.
LG
Lukas
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
18.10.2018 22:33:44
Rudi
da sehe ich aber kein Datum/ Uhrzeit
ziehe zurück. Falsches Thema im Kopf. owT
18.10.2018 22:35:26
Rudi
bei mir geht das. owT
18.10.2018 22:44:26
Rudi
AW: bei mir geht das. owT
19.10.2018 11:01:58
Lukas
Hallo,
habe da jetzt auch einige mal dran herum probiert, aber scheinbar kann er nicht den Damen der Datei einlesen oder so...
An sich ist das aber nicht sooo schlimm, bisher habe ich es so getrickst, dass ich die Tabellenblätter via VBA bereits fest bennant habe, und danach nur noch die richtigen Datei für die jeweilige Seite ausgewählt habe, die dann importiert wurde. Ist zwar nicht wirklich richtig in meinen Augen, da es keinen "Falschimport" abfängt, aber bisher funktioiert es soweit.
Meine Frage wäre jetzt, ob es anhand deines bereits geschriebenen Codes vielleicht stattdessen möglich wäre, dass wenn ich das Oberverzeichnis mit den unterschiedlichen Messordnern bereits kenne, zB: "C:\Users\Lukas\Messwerte", ich dort nur den Ordner der jeweiligen Messung auswählen muss und mir, wie du das bereits oben geschrieben hast, die vier CSV-Dateien mit den ebenfalls immer gleich bleibenden Namen, zB Datei1, Datei2, Datei3 & Datei4, nach Auswahl des Ordner automaisch auf jeweils ein eigenes Tabellenblatt importiert werden. Oben habe ich das ja schon bereits ähnlich beschrieben.
Wie klappt es dann, dass die Dateien auf Seiten importiert werden, die via VBA als Datei1, Datei2, Datei3 & Datei4 benannt werden? Also den Teil mit der automatischen Umbenennung habe ich ja bereits, die Frage ist jetzt eher, wie ich die mit dem ersten Teil von deinem Code verknüpfe, in welchem das automatische öffnen soweit ja schon funktioniert.
Ich hoffe man kann mir halbwegs folgen, hier den Code den ich zur Erstellung und Umbenennung der Tabellenblätter nutze, wahrscheinlich ist der nicht wirkich elegant..:
Sub Neue_Tabellenblaetter()
Dim wsNew As Worksheet
Set wsNew = Worksheets.Add
With wsNew
.Name = "Datei1"
.Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing
Set wsNew = Worksheets.Add
With wsNew
.Name = "Datei2"
.Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing
Set wsNew = Worksheets.Add
With wsNew
.Name = "Datei3"
.Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing
Set wsNew = Worksheets.Add
With wsNew
.Name = "Datei4"
.Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing
End Sub

Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
19.10.2018 23:27:02
fcs
Hallo Lukas,
wenn du die Blätter vorhab anlegen möchtes, dann sollte der ganze Aufbau der Makros etwas umstrukturiert werden.
1. Namen der zu importierenden Blätter in Array schreiben,
2. Verzeichnis mit Reihen-Dateien auswählen
3. Prüfen, ob die CSV-Dateien vorhanden sind
4. Blätter anlegen, dabei prüfen, ob Blatt mit Name schon vorhanden.
5. CSV-Import starten
Ich hab das Makro von Rudi getestet. gleiches Prüblem wie bei dir.
Ich hab es angepasst, so dass der Import korrekt erfolgt.
Ich hab auch dein ursprüngliches Import-Makro angepasst damit der Import in ein deutsches (Systemeinstellungen) Excel korrekt funktioniert. Dies betrifft das Dezimalzeichen (in CSV-Datei "." und die Wahrheitswerte TRUE/WAHR und FALSE/FALSCH.
LG
Franz
'erstellt und getestet unter Excel 2010
Sub Neue_Tabellenblaetter()
Dim wkb As Workbook, wks As Object
Dim wsNew As Worksheet
Dim vntDatei, vntDateien, strPfad As String, sBlattName As String
'Namen der CSV-Dateien, die importiert werden sollen in Array schreiben
vntDateien = Array("C2-Sample_Meas_DAC_DIE1.csv", _
"C2-Sample_Meas_DAC_DIE2.csv", _
"C2-Sample_MeasPost_DAC_DIE1.csv", _
"C2-Sample_MeasPost_DAC_DIE2.csv")
Set wkb = ActiveWorkbook
'Verzeichnis/Ordner mit den Dateien der Messreihe auswählen
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\Users\Public\Test\Messdaten"  'Startordner für Auswahl -  _
anpassen !!!
.Title = "Bitte Ordner mit Messreihe auswählen - Kutools for Excel"
If .Show = -1 Then
strPfad = .SelectedItems(1) & Application.PathSeparator
Else
GoTo Beenden
End If
End With
'Prüfen, ob Dateien im gewählten Verzeichnis vorhanden sind
For Each vntDatei In vntDateien
If Dir(strPfad & vntDatei) = "" Then
MsgBox "Datei: " & vntDatei & vbLf _
& "ist im Verzeichnis" & vbLf & strPfad & vbLf & "nicht vorhanden! Makro wird  _
abgebrochen", _
vbInformation + vbOKOnly, "Prüfung ob csv-Datei existiert - Kutools for Excel"
GoTo Beenden
End If
Next
With wkb
'Blätter anlegen - Blätter können auch beliebig andere Namen bekommen
For Each vntDatei In vntDateien
sBlattName = Left(vntDatei, Len(vntDatei) - 4)
'Prüfen, ob Blattname in Mappe schon vorhanden
If fncCheckBlattname(strName:=sBlattName, wkb:=ActiveWorkbook) Then
MsgBox "Blatt: " & sBlattName & vbLf _
& "ist in der Datei schon vorhanden. Makro wird abgebrochen", _
vbInformation + vbOKOnly, "Prüfen Blattnamen - Kutools for Excel"
GoTo Beenden
Else
Set wsNew = Worksheets.Add(after:=.Sheets(.Sheets.Count))
wsNew.Name = sBlattName
End If
Next
End With
Call ImportCSVFile_Lukas(strPfad, vntDateien, sEinfuegeZelle:="A2")
'    Call CSV_Import_Rudi_modifiziert(strPfad, vntDateien, sEinfuegeZelle:="A2")
Beenden:
End Sub
Function fncCheckBlattname(ByVal strName, Optional wkb As Workbook) As Boolean
'Funktion prüft, ob ein Blatt mit dem Namen in der Arbeitsmappe vorhanden ist
Dim objSheet As Object
On Error GoTo Fehler
If wkb Is Nothing Then Set wkb = ActiveWorkbook
Set objSheet = wkb.Sheets(strName)
fncCheckBlattname = True
Fehler:
End Function
Sub CSV_Import_Rudi_modifiziert(strPfad As String, vntDateien, Optional ByVal sEinfuegeZelle As  _
String = "A1")
Dim vROH, arrDaten(), vTMP, i As Long, j As Long
Dim vntDatei, iSheet As Integer
Const cstrDELIM As String = ";" 'Trennzeichen
iSheet = UBound(vntDateien) + 1
If Right(strPfad, 1)  "\" Then strPfad = strPfad & "\"
For Each vntDatei In vntDateien
Open strPfad & vntDatei For Input As #1  'Dateiname anpassen
vROH = Input(LOF(1), 1)
Close #1
vROH = Split(Replace(vROH, Chr(13), ""), Chr(10)) 'Ohne das Zeichen zu ersetzen wird  _
alles in eine Zeile geschrieben
ReDim arrDaten(UBound(vROH), UBound(Split(vROH(LBound(vROH)), cstrDELIM)))
For i = LBound(vROH) To UBound(vROH)
vTMP = Split(vROH(i), cstrDELIM)
For j = LBound(vTMP) To UBound(vTMP)
arrDaten(i, j) = vTMP(j)
Next
Next
iSheet = iSheet - 1
With ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count - iSheet)
.Range(sEinfuegeZelle).Resize(UBound(arrDaten) + 1, UBound(arrDaten, 2) + 1) = arrDaten
End With
Next vntDatei
End Sub
Sub ImportCSVFile_Lukas(strPfad As String, vntDateien, Optional ByVal sEinfuegeZelle As String = _
"A1")
Dim xFileName As Variant
Dim rngEinfuegen As Range
Dim wks As Worksheet
Dim vntDatei, iSheet As Integer
iSheet = UBound(vntDateien) + 1 '=Anzahl der zu importierenden CSV-Dateien
For Each vntDatei In vntDateien
xFileName = strPfad & vntDatei
With ActiveWorkbook
iSheet = iSheet - 1
Set wks = .Sheets(.Sheets.Count - iSheet)
End With
Set rngEinfuegen = wks.Range(sEinfuegeZelle)
With wks.QueryTables.Add("TEXT;" & xFileName, rngEinfuegen)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936     '?
'            .TextFilePlatform = 1252 'ANSI Windows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileTrailingMinusNumbers = True
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.Refresh BackgroundQuery:=False
End With
With wks
'Angelegte Daten-Verbindung der Querry wieder löschen
.QueryTables(1).WorkbookConnection.Delete
With .UsedRange
.Replace What:="TRUE", Replacement:="WAHR", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="FALSE", Replacement:="FALSCH", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.EntireColumn.AutoFit
End With
End With
Next vntDatei
End Sub

Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
22.10.2018 08:42:18
Lukas
Hallo Franz,
zuersteinmal ein ganz dickes Dankeschön auch an dich, das Programm sieht echt gut aus und funktioniert soweit auch ersteinmal, ihr beiden habt mir echt weitergeholfen. Allerings habe ich noch ein paar Fragen:
1. An den Stellen
MsgBox "Datei: " & vntDatei & vbLf _
& "ist im Verzeichnis" & vbLf & strPfad & vbLf & "nicht vorhanden! Makro wird   _
_
abgebrochen", _

und
MsgBox "Blatt: " & sBlattName & vbLf _
& "ist in der Datei schon vorhanden. Makro wird abgebrochen", _

wirft mir der Kompiler einen Syntaxfehler aus, bzw das Prgramm markiert die Zeile direkt in rot und sagt, dass ein Ausdruck erwartet wird. Habe die Ausgabe bereits auf ein einzelnes Wort reduziert, doch der Fehler bleibt der gleiche..
2. Beim importieren bleibt stets die erste Zeile leer. An sich ist das nicht so wirklich schlimm, jedoch wird danach bei der Berechung die Anzahl der beschriebenen Zeilen gezählt und bis zu dieser Zahl wird dann auch tatsächlich nur umgerechnet. Ich habe die Befürchtung, dass dabei Probleme auftauchen könnten, wenn die erste Zeile leer ist. Dachte es läge an in der Codezeile
.Range(sEinfuegeZelle).Resize(UBound(arrDaten) + 1, UBound(arrDaten, 2) + 1) = arrDaten

an dem +1, jedoch scheint ein löschen dessen keine Auswirkungen zu haben...
3.Das ist jetzt eher eine allgemeine Frage zu Excel:
Nachdem das Programm durchgelaufen ist, erscheint viermal ein Info-Fenster:
"Leider konnte nichts ersetzt werden. Klicken Sie auf "Optionen", um weitere Suchmöglichkeiten anzuzeigen.
Info: Möglicherweise befinden sich die Daten, die Sie ersetzen möchten, auf einem geschützten Blatt. Excel kann Daten auf geschützten Blättern nicht ersetzen."
Meines Erachtens nach funktioniert das importieren soweit und die Arbeitsmappe ist auch nicht geschützt. In dem Moment in dem ich diese Info-Fenster bestätige, füllt sich auch im Hintergrund das Blatt meiner Arbeitsmappe.
LG
Lukas
Anzeige
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
22.10.2018 08:42:40
Lukas
Hallo Franz,
zuersteinmal ein ganz dickes Dankeschön auch an dich, das Programm sieht echt gut aus und funktioniert soweit auch ersteinmal, ihr beiden habt mir echt weitergeholfen. Allerings habe ich noch ein paar Fragen:
1. An den Stellen
MsgBox "Datei: " & vntDatei & vbLf _
& "ist im Verzeichnis" & vbLf & strPfad & vbLf & "nicht vorhanden! Makro wird   _
_
abgebrochen", _

und
MsgBox "Blatt: " & sBlattName & vbLf _
& "ist in der Datei schon vorhanden. Makro wird abgebrochen", _

wirft mir der Kompiler einen Syntaxfehler aus, bzw das Prgramm markiert die Zeile direkt in rot und sagt, dass ein Ausdruck erwartet wird. Habe die Ausgabe bereits auf ein einzelnes Wort reduziert, doch der Fehler bleibt der gleiche..
2. Beim importieren bleibt stets die erste Zeile leer. An sich ist das nicht so wirklich schlimm, jedoch wird danach bei der Berechung die Anzahl der beschriebenen Zeilen gezählt und bis zu dieser Zahl wird dann auch tatsächlich nur umgerechnet. Ich habe die Befürchtung, dass dabei Probleme auftauchen könnten, wenn die erste Zeile leer ist. Dachte es läge an in der Codezeile
.Range(sEinfuegeZelle).Resize(UBound(arrDaten) + 1, UBound(arrDaten, 2) + 1) = arrDaten

an dem +1, jedoch scheint ein löschen dessen keine Auswirkungen zu haben...
3.Das ist jetzt eher eine allgemeine Frage zu Excel:
Nachdem das Programm durchgelaufen ist, erscheint viermal ein Info-Fenster:
"Leider konnte nichts ersetzt werden. Klicken Sie auf "Optionen", um weitere Suchmöglichkeiten anzuzeigen.
Info: Möglicherweise befinden sich die Daten, die Sie ersetzen möchten, auf einem geschützten Blatt. Excel kann Daten auf geschützten Blättern nicht ersetzen."
Meines Erachtens nach funktioniert das importieren soweit und die Arbeitsmappe ist auch nicht geschützt. In dem Moment in dem ich diese Info-Fenster bestätige, füllt sich auch im Hintergrund das Blatt meiner Arbeitsmappe.
LG
Lukas
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
22.10.2018 13:30:02
Lukas
Okay,
Problem 1 ist gelöst:
MsgBox "Datei: " & vntDatei & vbLf & "ist im Verzeichnis" & vbLf & strPfad & vbLf & "nicht  _
vorhanden. Makro wird abgebrochen", _
vbCritical + vbOKOnly, "Prüfung ob csv-Datei existiert - Kutools for Excel"

Der Untersrich hat da irgendwie für Probleme gesorgt. Und Problem 3 ist auch Nebensache geworden, auf anderen PCs läuft der Code ohne die Fehlermeldung, wird wohl doch an meinen eigenen Einstellungen liegen.
LG
Lukas
AW: Bestimmte CSV-Dateien in Arbeitsmappe importieren
22.10.2018 13:38:58
Lukas
Und jetzt zu Problem 2... Ewig lange im Code gesucht, warum es zur Leerzeile kommt, war schon kurz davor sämtliche Formeln umzuändern, die einfachste Möglichkeit gar nicht in Betracht gezogen..:
    Call ImportCSVFile_Lukas(strPfad, vntDateien, sEinfuegeZelle:="A2")

einfach zu
    Call ImportCSVFile_Lukas(strPfad, vntDateien, sEinfuegeZelle:="A1")

umändern!
Mein Anliegen wäre damit beantwortet, Franz und Rudi, nochmal ein ganz fettes Danke an euch!!!
Ich hoffe mal dieser Thread wird mit den ganzen Code-Zeilen in Zukunft noch anderen helfen können, die ein ähnliches Problem wie ich haben werden.
Freundliche Grüße
Lukas

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige