Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Daten aus ungeöffneten Dateien per VBA auslesen
#1
Hallo liebes Forum !
Ich hätte wieder ein Anliegen:
Ich möchte aus mehreren Dateien einige Daten auslesen, aber möchte um Zeit zu sparen diese nicht öffnen müssen.
Ich habe ein Makro von Beverly, das im Grunde bestens funktioniert, aber ist leider hier nicht anwendbar, da die auszulesenden Daten der Quelldatei leider in nicht fixen, sondern variablen Zeilen stehen können. Die Spalte ist aber fix.
Ich habe schon mit loLetzte und loErste versucht, aber das funktioniert nicht.
Außerdem wollte ich auch einen zusammenhängenden Datenblock auslesen, wenn das überhaupt möglich ist.

Hier das Makro von Beverly:

Code:
geschrieben von:  Beverly (IP bekannt)
Datum: 05.02.08 07:22

hier eine Möglichkeit, ohne die Arbeitsmappen zu öffnen

Sub daten_uebernehmen()
    Dim strFile As String   ' Variable für die Arbeitsmappe
    Dim strPath As String   ' Variable für den Pfad
    Dim loLetzte As Long    ' Variable für die lettze belegte Zelle
    ' Bidschirmaktualisierung aus
    Application.ScreenUpdating = False
    strPath = "C:\Test\"          ' Zuweisen Pfadname; Pfad bitte anpassen!
    strFile = Dir(strPath & "*.xls") ' Name der ersten Arbeitsmappe im Pfad ermitteln
    ' Schleife über alle im Verzeichnis vorhandenen Arbeitsmappen
    Do While strFile <> ""
        ' Name der Arbeitsmappe muss verschieden von der Mappe mit dem Code sein (damit diese nicht berücksichtigt wird)
        ' die If-Anweisung ist nur erforderlich, falls Mappe mit dem Code im selben Verzeichnis
        If strFile <> ThisWorkbook.Name Then
            ' letzte belegte Zelel in Spalte A ermitteln
            loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
            ' die ersten 4 Zeichen des Dateinamen werden in Spalte A geschrieben
            Cells(loLetzte + 1, 1) = Left(strFile, 4)
            ' in Spalte B:D wird die Formel eingetrage, damit ein Bezug zur geschlossenen Arbeitsmappe (Zellen A5, D7 und E8) entsteht
            Cells(loLetzte + 1, 2).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!A5"
            Cells(loLetzte + 1, 3).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!D7"
            Cells(loLetzte + 1, 4).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!E8"
        End If
        ' Namen der nächsten Arbeitsmappe auslesen
        strFile = Dir()
    Loop
    ' Bereich von A1:E bis zur lettzen belegten Zeile kopieren
    Range("A1:E" & loLetzte + 1).Copy
    ' Einfügen nur Werte (Formeln werden durch ihre Werte ersetzt,nur mehr
    Werte in den Zellen.
    Range("A1:E" & loLetzte + 1).PasteSpecial Paste:=xlPasteValues
    ' Zwischenablage leeren
    Application.CutCopyMode = False
    ' Bildschirmaktualisierung ein
    Application.ScreenUpdating = True
End Sub

Es wird davon ausgegangen, dass die Tabelle, aus der die Daten übernommen werden sollen, Tabelle1 heißt (bei Erfordernis anpassen).

Hat jemand eine Idee, wie das zu lösen wäre ?
Vielen Dank für Eure wertvolle Hilfe.
Liebe Grüße aus Innsbruck
Helmut
to top
#2
Hallo Helmut,

du schreibst aber nicht, nach welchen Kriterien festgelegt wird, welche Zeile ausgelesen werden soll.
Möchtest Du die letzte belegte Zeile in der geschlossenen Datei ermitteln? Das ginge nur über einen Umweg.

Was spricht dagegen, die Dateien im Hintergrund zu öffnen? Wenn sie schreibgeschützt geöffnet wird, kann sie auch von anderen geöffnet sein, und Du kannst trotzdem Deine Daten einlesen.
Das Einlesen könnte sogar schneller sein und Du kannst dann gezielt nach Daten suchen und diese abgreifen.
Gruß Atilla

Excel 2007
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
heli
to top
#3
Hallo Atilla,

Du bist, wie immer der Erste und wahrscheinlich der Beste, der sich meldet.
Zu deiner Frage nach welchen Kriterien die Zeile ausgewählt wird: Es ist abhängig von der Anzahl der in der Tabelle benützten Zeilen, welche sich nicht einfach, ohne zu öffnen bestimmen lässt.

Nachdem Du mich darin bestärkst, die Dateien doch besser zu öffnen, werde ich es auch so machen.
Ich habe dazu schon ein Makro zusammengestellt, nur dachte ich, vielleicht würde es schneller laufen, was ja offenbar nicht sein muss.
Vielen Dank für Deine Hilfe.
Liebe Grüße
Helmut
to top
#4
Hallo heli,

wenn Du weist, wann Du aus welchen Zellen Daten holen musst, könnte man den code von Beverly so anpassen, dass er je nach vorgegebener Bedingung aus anderen Bereichen Daten holt. Alternativ kannst Du einen größeren Bereich übernehmen, der alle Fälle einschließt, und dann in der Zieldatei die Auswahl treffen.

Man kann auch mehrere Daten mit einer Datenbankabfrage auf einen Ritt aus einer geschlossenen Mappe holen. Man muss dazu die Verbindungstreiber laden und eine Abfrage mit entsprechenden Bedingungen generieren. Du könntest z.B. aus einer "Adressdatenbank" - also einer Exceldatei mit den entsprechenden Daten, ohne Bedingung alles oder mit Bedingung alle Einträge holen, die in einem Bestimmten Ort wohnen und dort in einer bestimmten Straße oder Postleitzahl oder alle Meiers aus überall usw. Ich nutze so was auch ganz gern, vor allem, wenn mehrere Nutzer im Netzwerk mit den Daten der Datei arbeiten sollen.
Peter Haserodt hat das recht ausführlich beschrieben: http://www.online-excel.de/excel/singsel_vba.php?f=135
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
heli
to top
#5
Hi,

(26.12.2014, 06:33)schauan schrieb: Peter Haserodt hat das recht ausführlich beschrieben: http://www.online-excel.de/excel/singsel_vba.php?f=135

da ich das sehr interessant finde, habe ich das gleich versucht nachzubilden.
  • Datei erstellt
  • die Verweise auf die Library 2.8 und 6.1 angekreuzt
  • aus dem Bereich B2:C13 eine Tabelle gemacht: STRG-T
  • im Tabellen-Layout die Tabelle mit 'Quelle' benannt
  • abgespeichert als ado1a bis ado1c
  • nur 1a und 1b geöffnet
  • in 1a das Makro eingefügt
  • Codeteil ersetzt
Leider komme ich schon über das erste Makro nicht hinaus, d.h. wenn ich das Makro starte, kommt die Meldung: " 'Quelle$' ist kein gültiger Name " ...

Was jetzt?
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#6
Hallo,

könnte es sein, dass die Webseite momentan nicht erreichbar ist?

Wenn ich auf den Link klicke bekomme ich eine 403-Forbidden Meldung. Auch der Versuch http://www.online-excel.de direkt aufzurufen scheitert bei mir im Moment.

Muss ich mir jetzt Sorgen machen oder geht es anderen auch so?
Gruß
Peter
to top
#7
Peter schrieb:Muss ich mir jetzt Sorgen machen [...]?
Hallo Peter!
Heute Morgen gings noch, vllt. steht gerade jemand auf der Leitung.
(oder Dein Namensvetter hat was für Komödien, die Nordkorea aufs Korn nehmen)05

Gruß, Ralf
to top
#8
Hallo Peter

Heute Morgen war das Forum nicht erreichbar.
Mittlerweile funktioniert der Link wieder:
http://www.online-excel.de/fom/fo_na.php?f=1

Vielleicht ist das nur ein temporäres Problem.
Wir sehen uns!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#9
Hallöchen,

auch ich bekomme die 403-Forbidden Meldung.
Allerdings ging der Link noch.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

?mage
to top
#10
Hi,

um 12:11 h ging der Link noch, momentan nicht mehr.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
Thumbs Up Daten aus einer Matrix auslesen tbuergel 1 41 25.11.2016, 21:39
Letzter Beitrag: shift-del
  Aus mehreren Excel-Dateien bestimmte Zellen auslesen Günti 5 269 12.09.2016, 09:19
Letzter Beitrag: Günti
  Tabellen Daten auslesen und anzeigen moe_zzarella 17 636 29.07.2016, 17:43
Letzter Beitrag: schauan
  Aus anderen Dateien auslesen und zählen Sobriquet 5 418 09.05.2016, 14:17
Letzter Beitrag: Sobriquet
  Excel Werte aus anderen Excel Dateien auslesen Sebo 3 641 05.05.2016, 21:40
Letzter Beitrag: schauan
  VBA Code > Daten aus vielen EXEL-Dateien in einer Datei vereinen Brinkhoff 12 892 04.03.2016, 12:51
Letzter Beitrag: Rabe
Smile Excel Daten auswerten aus mehreren Dateien Watzmann 1 544 21.01.2016, 18:19
Letzter Beitrag: schauan
  Auslesen von Werten in ungeöffneten Dateien Hardbopper 21 2.688 12.10.2015, 17:48
Letzter Beitrag: Hardbopper
  POWER QUERY: Daten aus wechselnden Quellen auslesen Hardbopper 1 561 06.10.2015, 09:15
Letzter Beitrag: Hardbopper
  Dateien aus Ordner auslesen - #NV xlsxvba 13 1.656 24.09.2015, 07:43
Letzter Beitrag: xlsxvba

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste