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

Hilfe bei Datenerfassung benötigt

Hilfe bei Datenerfassung benötigt
chris
Guten Abend,
Ich bin gerade dabei ein Makro zu schreiben um die Daten, die ein Messgerät ausgibt automatisch in ein Excel-File zu importieren, damit diese dort ausgewertet werden können.
Das Messgerät gibt eine Menge an Daten aus, relevant sind für mich nur 2 Dateien:
a) "Datei 1" in der Die Artikelinfos des untersuchten Objektes stehen
b) "Datei 2" Die Unmengen an Daten enthält, etwa 6 Spalten mit bis zu 60'000 Zeilen
Bis jetzt habe ich es geschafft, dass der Nutzer nur den Ordner auswählen muss und mein skript findet die Namen der 2 Dateien selbst heraus und importiert "Datei 1" in das gewünschte Sheet "info".
Mein Problem:
Ich weiss nicht wie ich es nun hinkriege die Daten aus "Datei 2" in das Sheet "data" ab "B2" eingefügt werden. Vielleicht kann mir da jemand helfen?
Option Explicit
Sub Import()
'Ordner Auswählen --------------------------------------------------
Dim strOrdner As String
Dim ORDNER As Characters
Dim Dateiname, Pfad, teil, Datei
Dim Importdatei$, Verzeichnis$, Messdaten$, Importdatei2
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "M:\Projekte\Betriebsversuche_CDP\aktive_Betriebsversuche\LIP\ _
Projekt LIP(ei)\Automatisierung\Makro\"
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then MsgBox ("Kein Ordner gewählt!") Else MsgBox "Ordner ausgewählt:" &  _
vbCrLf & strOrdner
'Auswahl zu Ende----------------------------------------------------
'InfoDatei suchen---------------------------------------------------
Datei = Right(strOrdner, 27)
Dateiname = Datei & "_00.dat"
If Dateiname = "" Then MsgBox "Keine Datei gefunden" Else MsgBox "Informationen importiert!" &  _
vbCrLf & Dateiname
Application.ScreenUpdating = False
'Suche Beendet------------------------------------------------------
'Import aus Infodatei-----------------------------------------------
Verzeichnis = strOrdner & "/"
On Error Resume Next
ChDir Verzeichnis
Importdatei = Dateiname
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei, _
Destination:=Range("A1"))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
.Refresh
End With
'Import beendet-----------------------------------------------------
'Messdaten Suchen---------------------------------------------------
Messdaten = Datei & ".dat"
If Dateiname = "" Then MsgBox "Keine Datei gefunden" Else MsgBox "Messdaten importiert!" &  _
vbCrLf & Messdaten
Application.ScreenUpdating = False
'Suche Beendet------------------------------------------------------
'Import von Messdaten-----------------------------------------------
Verzeichnis = strOrdner & "/"
On Error Resume Next
ChDir Verzeichnis
Importdatei2 = Messdaten
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei2, _
Destination:=Sheets("Tabelle2").Cells(Cells(2, 2)))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
.Refresh
'Import beendet-----------------------------------------------------
End With
End Sub

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

Betreff
Benutzer
Anzeige
AW: Hilfe bei Datenerfassung benötigt
02.03.2012 06:20:31
fcs
Hallo Chris,
With Sheets("Tabelle2").QueryTables.Add(Connection:="TEXT;" & Importdatei2, _
Destination:=Sheets("Tabelle2").Range("B2"))
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
.Refresh
'Import beendet-----------------------------------------------------
End With
Application.ScreenUpdating = True

Dann sollte es funtionieren.
Gruß
Franz
AW: Hilfe bei Datenerfassung benötigt
02.03.2012 07:08:36
Chris
Danke für deine Antwort
Wenn ich nun deinen Code verwende werden die Daten zwar importiert, allerdings immernoch im sheet info, allerdings tauchen jetzt im feld B2 nicht nur die Messdaten auf, sondern auch die Informationen nochmals und eigentlich sollten die Messdaten aus dem .dat File in Spalten getrennt sein, was sie nach dem Import aber nicht mehr sind.
Gruss Chris
Anzeige
AW: Hilfe bei Datenerfassung benötigt
02.03.2012 07:20:33
Chris
Danke für deine Antwort
Mit deinem Code habe ich es nun geschafft die Daten in das andere Sheet zu laden, nun habe ich aber das Problem das die Daten zwar in Range "B2" eingefügt werden, allerdings hat der Datensatz eigentlich
mehrere Spalten, die Daten werden aber nur in eine Spalte importiert.
Wenn man sie von Hand importieren würde müsste man die Befehle:
Text in Spalten getrennt
Tabstopp
Leerzeichen auswählen.
Wie lässt sich das in das Makro integrieren?
Gruss Chris
AW: Daten-Import aus Textdatei
03.03.2012 04:57:39
fcs
Hallo Chris,
für den Import von Daten aus einer Textdatei können noch wesentlich mehr Parameter festgelegt werden. Unter anderem auch die Feldtrennzeichen.
Man sollte allerdings immer nur ein Trennzeichen auf True und alle anderen auf False.
Bei der Behandlung von Fehlern sollte man "On Error Resume Next" sparsam einsetzen.
Eine möglichst spezifische Fehlerauswertung ist da besser.
Gruß
Franz
Sub Import()
'Ordner Auswählen --------------------------------------------------
Dim strOrdner As String
Dim ORDNER As Characters
Dim Dateiname, Pfad, teil, Datei
Dim Importdatei$, Verzeichnis$, Messdaten$, Importdatei2
On Error GoTo Fehler
strOrdner = "M:\Projekte\Betriebsversuche_CDP\aktive_Betriebsversuche\" _
& "LIP\Projekt LIP(ei)\Automatisierung\Makro\"
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = strOrdner
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then
MsgBox ("Kein Ordner gewählt!")
GoTo Beenden
Else
MsgBox "Ordner ausgewählt:" & _
vbCrLf & strOrdner
End If
'Auswahl zu Ende----------------------------------------------------
'InfoDatei suchen---------------------------------------------------
Datei = Right(strOrdner, 27)
Dateiname = Datei & "_00.dat"
If Dateiname = "" Then
MsgBox "Keine Datei gefunden"
GoTo Beenden
Else
MsgBox "Informationen importiert!" & _
vbCrLf & Dateiname
End If
Application.ScreenUpdating = False
'Suche Beendet------------------------------------------------------
'Import aus Infodatei-----------------------------------------------
Verzeichnis = strOrdner & Application.PathSeparator          'Anpasung
'On Error Resume Next
Importdatei = Verzeichnis & Dateiname
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Importdatei, _
Destination:=Range("A1"))
.Name = "Info_File"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252 'Windows (ANSI)
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
'    .TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
'.EnableRefresh = False
End With
'Import beendet-----------------------------------------------------
'Messdaten Suchen---------------------------------------------------
Messdaten = Datei & ".dat"
If Dateiname = "" Then
MsgBox "Keine Datei gefunden"
GoTo Beenden
Else
MsgBox "Messdaten importiert!" & _
vbCrLf & Messdaten
End If
Application.ScreenUpdating = False
'Suche Beendet------------------------------------------------------
'Import von Messdaten-----------------------------------------------
Importdatei2 = Verzeichnis & Messdaten
Application.ScreenUpdating = False
With Sheets("Tabelle2").QueryTables.Add(Connection:="TEXT;" & Importdatei2, _
Destination:=Sheets("Tabelle2").Range("B2"))
.Name = "Data_File"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
'    .TextFilePlatform = 850   'MS-DOS PC-8
.TextFilePlatform = 1252  'WIndows ANSI
'    .TextFilePlatform = 65001 'Unicode UTF-8
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ""
'        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.TextFileDecimalSeparator = ","
.TextFileThousandsSeparator = "."
.Refresh BackgroundQuery:=False
'.EnableRefresh = False
'Import beendet-----------------------------------------------------
End With
Beenden:
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.ScreenUpdating = True
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige