Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Datenimportieren per Makro





Frage

Hallo zusammen, ich möchte eine *.dat Datei in mein bestehendes Excel-File Arbeitsplatt "Stammdaten" importieren. Das Makro soll aber zuerst ein Dateimanager zur auswahl der datei öffnen und anzeigen damit ich Datei auswählen kann. Kann mir jemand helfen??? Vielen Dank im Voraus

Antwort 1 von coros

Hi gast5,

nachfolgendes Makro kopiere in ein Standard Modul und weise es einer Schaltfläche zu.

Option Explicit

Sub Datenimport()
Dim Importdatei$, Verzeichnis$
Verzeichnis = "E:\"
On Error Resume Next
ChDir Verzeichnis
Importdatei = Application.GetOpenFilename("Exceldateien (*.dat), *.dat")
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei, _
Destination:=Range("A1"))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
End With
End Sub


Bei obigen Makro wird zunächst das Fenster zur Auswahl der zu importierenden Datei aufgemacht. Es wurde bedingt durch das Makro schon eine Vorauswahl getroffen und nur Dateien angezeigt, deren Dateiendung .dat haben. Nachdem eine Datei ausgewählt wurde, werden die Daten der Datei importiert und ab Zelle A1 eingefügt. Bei dem Makro wird, da Du nicht sehr viel geschrieben hast bezüglich des Trennzeichens, das Semikolon als Trennzeichen benutzt. Wenn Du aber ein Komma oder ein Leerzeichen oder ein Tabstopp benötigst, dann musst Du in dem Makro in der Zeile

.TextFileSemicolonDelimiter = True

für ein Komma gegen die Zeile

.TextFileCommaDelimiter = True

für ein Leerzeichen gegen die Zeile

.TextFileSpaceDelimiter = False

bei einem Tabstopp gegen die Zeile

.TextFileTabDelimiter = True

tauschen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von gast5

Hallo coros,

Vielen herzlichen Dank für deine Hilfe.
Nun bin ich schon einen riesen Schritt weiter.
Kann ich unter <Destination> auch ein Arbeitsblatt (bei mir (Stammdaten) angeben?
Zuerst müssten aber alle bestehenden Daten auf diesem Arbeitsblatt gelöscht werden. Erst dann dürfen die neuen importiert werden.
Vielen Dank für die Hilfe.

Freundliche Grüsse
Danny

Antwort 3 von coros

Moin Danny,

das geht schon, allerdings reicht es nicht hinter "Destination" noch den Blattnamen mit anzugeben. Das geht beim Importieren externer Daten nicht. Die können nur in dem gerade aktiven Blatt eingefügt werden. Aber mit einer kleinen Hilfe bekommt man das schon hin. Man aktiviert vorher einfach das Blatt "Stammdaten", importiert dorthin die Daten, da es ja jetzt das aktive Blatt ist und aktiviert zum Schluss wieder das Blatt, von dem aus das Makro gestartet wurde. Damit man dass ganze nicht mitbekommt, schaltet man die Bildschirmaktualisierung für die Dauer des Makros mit dem Befehl

Application.ScreenUpdating = False

aus. Damit verhindert man, dass man das hin und her springen zwischen den Blättern sonst am Monitor je nach Rechnergeschwindigkeit mehr oder weniger verfolgen kann. Einschalten braucht man diese Bildschirmaktualisierung nicht mehr, das geht nach Ablauf des Makros von alleine.
nachfolgend das Makro, dass das oben beschriebene erledigt. Ebenfalls enthalten ist das löschen aller Daten in dem Stammdatenblatt.

Option Explicit

Sub Datenimport()
Dim Importdatei$, Verzeichnis$, aktiver_Blattname As String
Application.ScreenUpdating = False
aktiver_Blattname = ActiveSheet.Name
Sheets("Stammdaten").Activate
Cells.ClearContents
Verzeichnis = "E:\"
On Error Resume Next
ChDir Verzeichnis
Importdatei = Application.GetOpenFilename("Exceldateien (*.dat), *.dat")
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei, _
Destination:=Range("A1"))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
End With
Sheets(aktiver_Blattname).Activate
End Sub


Ich hoffe, Du hast das so gemeint. Bei Fragen oder Problemen weißt Du ja, wo Du Hilfe bekommst.


MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von gast5,

Hallo coros,

das hat alles super geklappt.
Vielen Dank.
Jetzt habe ich nur noch ein Problem.
Ich habe eine Pivot-Tabelle dessen Datenquelle das Arbeitsblatt (Stammdaten) ist. Wenn ich nun die neuen Daten mit dem obigen Makro importiere sollte ich die Pivot-Tabelle aktualisieren.
Ist es möglich das auch noch zu ergänzen?
Vielen Dank für die tollen Bemühungen.

gruss Danny

Antwort 5 von coros

Hi Danny,

nachfolgendes Makro, das wie das vorherige ist nur mit dem Zusatz zum Aktualisieren der Pivottabelle, sollte funktionieren.

Option Explicit

Sub Datenimport()
Dim Importdatei$, Verzeichnis$, aktiver_Blattname As String
Application.ScreenUpdating = False
aktiver_Blattname = ActiveSheet.Name
Sheets("Stammdaten").Activate
Cells.ClearContents
Verzeichnis = "E:\"
On Error Resume Next
ChDir Verzeichnis
Importdatei = Application.GetOpenFilename("Exceldateien (*.csv), *.csv")
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei, _
Destination:=Range("A1"))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
End With
Sheets(aktiver_Blattname).Activate
ActiveSheet.PivotTables("PivotTable1").RefreshTable
End Sub


Du musst allerdings noch in dem Makro in der Befehlszeile

ActiveSheet.PivotTables("PivotTable1").RefreshTable

den Namen "PivotTable1" gegen den Namen Deiner Pivottabelle tauschen.

Ich hoffe, es klappt.


MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von gast05

hallo coros,

Ich habe dir ein Email gesenden mit meiner Datei.
Das Problem ist, dass nach einigen Datenimporten eine Element der Pivot.-Tabelle verloren geht????
Ansonsten würde es sehr gut funktionieren.

vielen Dank

freundlicher Gruss
Danny

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: