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

Daten auslesen

Daten auslesen
28.09.2017 13:22:04
Chris
Hey,
ich möchte gern mit einem Klick aus einer anderen Tabelle Messdaten auslesen und sie in meiner Tabelle speichern. Nach längeren suchen habe ich auch einen Super Code Gefunden, jedoch kopiert er mir den ausgelesenen Bereich in den gleichen Bereich wieder rein (z.B. Range("B2:F5") auch in anderer Tabelle gleiche Range). Das möchte ich aber nicht, denn in der Tabelle wo die ausgelesenen Daten abgespeichert werden sollen soll als Statistiktabelle dienen. Somit sollte es so laufen wenn ich den Button drücke:
- liest Daten aus jeweiliger Tabelle in definierter Range aus
- übernimmt diese Daten in nächster Freier Zeile
- Zellen ohne Wert sollen nicht als 0 gewertet bzw. nicht mit übertragen werden
Der aktuelle Code sieht wie Folgt aus:
Sub Bereich_auslesen ()
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'Angaben zur auszulesenden Zelle
pfad = "\\Quellpfad"
datei = "Messdaten"
blatt = "Messwerte"
Set bereich = Range("B4:f102")
' Bereich auslesen
For Each zelle In bereich
' Zellen umwandeln
zelle = zelle.Address(False, False)
' Eintragen in Bereich
ActiveSheet.Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, blatt, zelle)
Next zelle
End Sub
Private Function GetValue(pfad, datei, blatt, zelle)
' Daten aus geschlossener Arbeitsmappe auslesen
Dim arg As String
' Sicherstellen, dass das datei vorhanden ist
If Right(pfad, 1)  "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, ,   _
_
xlR1C1)
' Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Vielen lieben Dank im Voraus.
Grüße Chris

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

Betreff
Datum
Anwender
Anzeige
AW: Daten auslesen
28.09.2017 14:05:21
Nepumuk
Hallo Chris,
warum öffnest du die Datei nicht mit der Open-Methode und kopierst den gewünschten Bereich?
Deine Methode öffnet die Datei 495mal (für jede Zelle die übertragen wird 1mal). Auch das Problem mit den 0 Werten wäre erledigt.
Gruß
Nepumuk
AW: Daten auslesen
28.09.2017 14:46:38
Chris
Hey Nepumuk,
wie meinst du das genau? Also die Messwertetabelle liegt auf einen anderen Rechner und sollte auch möglichst nicht geöffnet werden, da sich sonst die Messmaschine mit ihren Programm aufhängt.
Grüße
Chris
AW: Daten auslesen
28.09.2017 14:53:07
Nepumuk
Hallo Chris,
ist doch kein Problem. Da du sowieso nur lesen willst, öffne die Datei schreibgeschützt, dann hat die Messmaschine kein Problem. Vor allen Dingen geht das in 3-4 Sekunden und nicht wie die Methode mit Excel4-Makros die für jeden Wert einen DDE-Kanal öffnet um darüber auf die andere Mappe zugreift. Das dauert für deine 495 Werte garantiert eine Minute. Oder glaubst du Excel liest direkt von der Festplatte?
Gruß
Nepumuk
Anzeige
AW: Daten auslesen
28.09.2017 20:27:40
Chris
Hey Nepumuk,
ich stehe gerade völlig auf dem Schlauch was genau du meinst und wie der Code dafür ausschauen könnte. Könntest du mir da eventuell auf die Sprünge helfen? Aber es klint auf alle Fälle nach einer Lösung, nach dr ich suche!
Grüße
Chris
AW: Daten auslesen
28.09.2017 20:45:16
Nepumuk
Hallo Chris,
folgender Code sollte genau das machen was du willst und das innerhalb weniger Sekunden.
Option Explicit

Public Sub Bereich_auslesen()
    Dim objWorksheet As Worksheet
    Dim objWorkbook As Workbook
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    Set objWorksheet = ActiveSheet
    Set objWorkbook = Workbooks.Open(Filename:="\\Quellpfad\Messdaten.xlsx", _
        UpdateLinks:=0, ReadOnly:=True)
    With objWorksheet
        Call objWorkbook.Worksheets("Messwerte").Range("B4:F102").Copy( _
            Destination:=.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
    End With
    Call objWorkbook.Close(Savechanges:=False)
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
    Set objWorkbook = Nothing
    Set objWorksheet = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Daten auslesen
28.09.2017 22:02:36
Chris
Hey Nepumuk,
danke erstmal für deinen Code. Sieht echt einfacher aus, als das was ich damit machen wollte. Doch irgendwie funktioniert das nicht so wie wir uns das denken. Kann es möglich sein das es daran liegt, dass die zu lesende Tabelle eine CSV ist?
Hmm nein das habe ich auch ausgeschlossen, denn bei einer XLSX macht er es auch nicht. Er öffnet zwar im Hintergrund die Datei, markiert den Breeicht und hat ihn auch im Zwischenspeicher, doch das Einfügen macht er einfach nicht. Woran liegt das?
Grüße
Chris
AW: Daten auslesen
29.09.2017 07:58:51
Nepumuk
Hallo Chris,
liegt es eventuell daran, dass du nicht siehst wie die Daten in die erste freie Zeile der aktiven Tabelle eingefügt werden?
Gruß
Nepumuk
Anzeige
AW: Daten auslesen
29.09.2017 11:18:26
Chris
Hey Nepumuk,
ja verdammt es war absolut mein Fehler und es läuft super. Ich hatte beim ersten Versuch vergessen nicht die erste Spalte abzufragen, da dort eine Formel drin war die eine laufende Nummer generiert und da hatte es mir es alles ans Ende gestellt. Vielen lieben Dank!!!
Beste Grüße
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige