Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1360to1364
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
CSV per Dialog auswählen und importieren
18.05.2014 18:00:25
Henner
Hallo zusammen,
ich möchte gerne das 1. Tabellenblatt (Ganz links, Name kann variieren) einer CSV Datei kopieren und in das Tabellenblatt "CSV.Import" meiner Arbeitsmappe einfügen. Das Auswählen der CSV Datei möchte ich mit einem Dialogfenster und per VBA lösen:
1. Dialogfenster öffnen
2. CSV Datei auswählen lassen, dann klick auf "Importieren"
3. Ausgewählte CSV Datei öffnen, 1. Tabellenblatt kopieren und wieder schliessen
4. Inhalt in Tabellenblatt "CSV.Import" meiner Arbeitsmappe einfügen
5. Den kompletten Dateipfad der importierten CSV Datei in Tabelle1 Zelle A1 schreiben.
Habe bei meinen Recherchen zwar einige Vorschläge gefunden, diese scheinen mir für meine Anforderungen aber schon fast zu aufwendig.
Vielen Dank im Voraus und einen schönen Sonntag! Henner

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV per Dialog auswählen und importieren
18.05.2014 19:25:58
Ewald
Hallo,
schau mal ob das paßt, hier wird zwar in eine Textbox eingelesen, aber das kannst du ja ändern
Sub Aufruf()
Dim intZeile  As Integer
Dim maxzeile As Integer
Dim intDatei  As Integer
Dim sfile     As String
Dim strText   As String
With ActiveSheet
Range("B3:G3").ClearContents
' .CheckBox1 = False
'.CheckBox2 = False
End With
sfile = Application.GetOpenFilename("Text Dateien (*.csv), *.csv")
If sfile = "Falsch" Then Exit Sub
maxzeile = ActiveSheet.Range("L5").Value 'Vorgabe wieviel Zeilen gelsen werden sollen
intDatei = FreeFile()
Open sfile For Input As #intDatei
ActiveSheet.TextBox1.Text = ""
Do Until EOF(intDatei)
intZeile = intZeile + 1         ' die gelesenen Zeile zählen
Input #intDatei, strText
If intZeile = maxzeile Then Exit Do   ' nur die vorgegebenen  Zeilen lesen
If strText  "" Then
If ActiveSheet.TextBox1.Text = "" Then
ActiveSheet.TextBox1.Text = strText
Else
ActiveSheet.TextBox1.Text = ActiveSheet.TextBox1.Text & Chr(10) & strText
End If
End If
Loop
Close #intDatei
End Sub
Gruß Ewald

Anzeige
AW: CSV per Dialog auswählen und importieren
18.05.2014 19:46:51
Henner
Hallo Ewald,
vielen Dank für Deinen Vorschlag. Grundsätzlich geht das schonmal in die richtige Richtung. Was noch fehlt wäre:
1. Das Dialogfenster soll im gleichen Pfad wie meine Arbeitsmappe geöffnet werden
2. Das Einfügen in mein Tabellenblatt will mir nicht gelingen
Irgendwie habe ich das Gefühl dass der Code auch mehr macht als er soll (Zeilen zählen etc), wäre es nicht einfacher gleich das komplette Blatt zu kopieren?
Danke & Gruss

AW: CSV per Dialog auswählen und importieren
18.05.2014 22:49:37
Ewald
Hallo Henner,
dann teste mal dies,es wird in Tabelle2 importiert.
Public Sub Importieren()
Dim Dateiname  As String
Dateiname = Application.GetOpenFilename(filefilter:="Textdateien (*.csv), *.csv")
If Dateiname = "Falsch" Then
Exit Sub
Else
Call Holen(Dateiname, ";")
End If
End Sub
Sub Holen(fname As String, Optional FS As String = ";")
Dim sfile    As Integer   ' Filehandle bzw. Dateinummer
Dim lAnzahl  As Long      ' Zähler über alle Zeilen
Dim OneLine  As String    ' eine Zeile als String
Dim myArr    As Variant   ' eine Zeile in Felder getrennt
ThisWorkbook.Worksheets("Tabelle2").Select 'Anpassen
Cells.ClearContents
sfile = FreeFile
Open fname For Input As #sfile
While Not EOF(sfile)
lAnzahl = lAnzahl + 1
Line Input #sfile, OneLine
If OneLine  "" Then         ' ist die Zeile NICHT leer?
myArr = Split(OneLine, FS) ' dann am Trennzeichen separieren
With Range(Cells(lAnzahl, 1), Cells(lAnzahl, UBound(myArr)))
.NumberFormat = "@"
.Value = myArr
End With
End If
Wend
Close #sfile
Columns("A:AZ").ColumnWidth = 10.78 ' die Spaltenbreite wiederherstellen
Cells.EntireColumn.AutoFit          ' die optimale Spaltenbreite herstellen
End Sub
Gruß Ewald

Anzeige
AW: CSV per Dialog auswählen und importieren
19.05.2014 13:21:29
Henner
Hallo Ewald,
vielen Dank für Deine Hilfestellung! Gruss

AW: CSV per Dialog auswählen und importieren
19.05.2014 07:28:42
Daniel
Hi
generell hat eine CSV-Datei immer nur ein Tabellenblatt, von daher ist deine Anforderung etwas verwirrend.
Ansonsten probiere mal diesen Code:
Sub CSV_Einfügen()
Dim Datei As String
ChDrive Left(ThisWorkbook.FullName, 1)
ChDir ThisWorkbook.Path
Datei = Application.GetOpenFilename("CSV, *.csv")
If Not LCase(Datei) Like "*.csv" Then Exit Sub
With Workbooks.Open(Datei, ReadOnly:=True, local:=True)
.Sheets(1).UsedRange.Copy _
ThisWorkbook.Sheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Cells(1, 1)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = .Sheets(1).Name
.Close False
End With
End Sub
Gruß Daniel

Anzeige
AW: CSV per Dialog auswählen und importieren
19.05.2014 12:59:23
Henner
Hallo Daniel,
das sieht schon sehr gut aus. Die einzige kleine Änderung die ich noch gerne hätte, wäre dass Excel kein neues Tabellenblatt einfügt sondern in das bestehende Blatt "CSV.Import" lädt. Wenn Du mir das noch anpassen würdest wäre ich sehr dankbar.
Nochmals vielen Dank & Gruss, Henner

AW: CSV per Dialog auswählen und importieren
19.05.2014 13:02:02
Daniel
Wenn das Sheet schon vorhanden ist, dann kannst du es auch einfach als Ziel bei der Copy-Funktion einfügen.
.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("CSV.Import").Cells(1, 1)
Gruß Daniel

AW: CSV per Dialog auswählen und importieren (ERL)
19.05.2014 13:20:46
Henner
Super, vielen Dank! Gruss

100 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige