Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Importieren von Daten

Importieren von Daten
19.07.2006 15:14:13
Daten
Hallo Leute!
Hab mal wieder ein kleines Problem.
Habe einen Button. Wenn ich diesen anklicke, dann soll sich ein Explorer-Fenster öffnen, wo ich mir eine zu importierende Datei aussuchen will (Typ ist egal).
Hab ich diese ausgesucht, dann soll sie automatisch importiert werden an eine Stelle im Arbeitsblatt.
Kann mir da jemand weiter helfen?
Danke
Andy

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

Betreff
Datum
Anwender
Anzeige
Typ ist nicht egal
19.07.2006 16:24:35
IngGi
Hallo Andy,
mit
strDateiname = Application.GetOpenFilename()
kannst du über ein Explorerfenster einen Dateinamen mit Pfad an eine Stringvariable übergeben. Alles weitere hängt dann natürlich vom Dateityp ab.
Gruß Ingolf
AW: Importieren von Daten
19.07.2006 16:32:31
Daten
Hallo Andy,
in Excel funktioniert das am besten mit Einfügen Objekt aus Datei. Wobei mehrseitige Dokumente ggf. Probleme machen bzw. es wird nur die 1. Seite in Excel eingebettet/angezeigt.

Sub Makro1()
Dateiname = Application.GetOpenFilename(Title:="Einzufügende Datei auswählen")
If Dateiname = False Then Exit Sub
ActiveSheet.OLEObjects.Add(Filename:=Dateiname, Link:=False, DisplayAsIcon:=False).Select
End Sub

Mit Link:=True wird die Datei in Excel als Verknüpfung eingebunden, spart Speicherplatz.
mfg
Franz
Anzeige
AW: Importieren von Daten
20.07.2006 16:30:20
Daten
Hallo!
Ich meinte das alles etwas anders.
Ich wollte nicht die Datei als Link, sondern die werte innerhlb der Datei in meine Tabelle Importieren.
AW: Importieren von Daten
21.07.2006 12:15:03
Daten
Hallo Andy,
das ist natürlich etwas völlig anderes. Der Typ der Datei spielt jetzt eine ganz entscheidende Rolle. Excel kann ja nicht aus jedem Datei-Typ Daten einlesen.
Ich habe hier mal für 3 Typen eine Lösung. Dabei ist es nicht einfach, alle Sonderfälle zu erfassen. Bei Textdateien macht es evtl. noch Sinn den "Origin" abzufragen. Das ganze kann man jetzt natürlich erweitern für andere Datei-Typen, wobei dann die jeweiligen Besonderheiten beim Öffnen/Import zu berücksichtigen sind.
Da Excel für verschiedene Dateiformate auch Importfilter/Konverter hat, reicht es möglichweise aus den Case "xls" um diese Dateiendungen zu erweitern. Konnte ich aber mangels Datenbasis nicht testen. Bei CSV-Dateien funktioniert dieser "einfache Weg" zumindest nicht. Evtl. muss man sich hier auch um den optionalen Paramter "Converter" und ggf. installierte Konversionsprogramme kümmern.
mfg
Franz

Sub Werte_aus_Datei_einfügen()
' ab der aktuell selektierten Position werden Daten aus anderer Datei eingefügt
Dim wb As Workbook, wks As Worksheet, wbAktiv As Workbook, wksAktiv As Worksheet
Dim rngZelle As Range
DateiName = Application.GetOpenFilename(Title:="Einzufügende Datei auswählen")
If DateiName = False Then Exit Sub
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
Set rngZelle = ActiveCell
Select Case Right(DateiName, 3)
Case "xls", "XLS"
' Daten aus den Tabellenblättern der Exceldatei einfügen
Set wb = Application.Workbooks.Open(Filename:=DateiName, ReadOnly:=True)
For Each wks In wb.Worksheets
If Not (wks.UsedRange.Cells.Count = 1 And IsEmpty(wks.UsedRange.Cells(1, 1))) Then
wks.UsedRange.Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
Set rngZelle = rngZelle.Offset(wks.UsedRange.Rows.Count, 0)
End If
Next wks
wb.Close savechanges:=False
Case "csv", "CSV"
' Daten aus einer CSV-Datei einfügen, Daten sind durch Semicolon getrennt
'CSV-Datei temporär als txt-Datei kopieren
VBA.FileCopy Source:=DateiName, Destination:=Left(DateiName, Len(DateiName) - 3) & "txt"
DateiName = Left(DateiName, Len(DateiName) - 3) & "txt"
Application.Workbooks.OpenText Filename:=DateiName, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False
Set wb = ActiveWorkbook
wb.Sheets(1).UsedRange.Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
wb.Close savechanges:=False
'Kopie wieder löschen
VBA.Kill (DateiName)
Case "txt", "TXT"
' Daten aus einer Text-Datei einfügen, Trennzeichen TAB oder Semicolon werden erkannt
Application.Workbooks.OpenText Filename:=DateiName, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False
Set wb = ActiveWorkbook
wb.Sheets(1).UsedRange.Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
wb.Close savechanges:=False
Case Else
MsgBox "Für den Dateityp von " & DateiName & " wird der Import nach Excel von diesem Makro nicht unterstützt!"
End Select
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige