Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

auslesen von dateien

Betrifft: auslesen von dateien von: Tom
Geschrieben am: 11.04.2014 22:35:50

Hallo,

wie lässt sich das Makro unten folgend so anpassen, damit ich nicht immer den Pfad auswählen muss, wo die Dateien liegen? Das Makro soll immer auf den gleichen Ordner auf dem Server zugreifen und sich von dort die benötigen Informatioen holen.

Welche schnelleren Möglichkeiten gibt es noch sich Werte aus anderen Dateien zu holen? Das Makro öffnet eine Datei nach und nach und liest immer aus der gleichen Zeile aus und speichert die Werte in der Tabelle X ab. Die Prozedur dauert etwas, je nach dem wie viele Daeien auszulesen sind. Lässt sich eine Verknüpfung herstellen, durch die ich sofort beim eintragen eines Wertes die Information in meiner Tanelle X erhalte ohne ein Makro dazwischen schalten zu muss?

Sub DatenImportieren()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Auslesen der einzelnen Fahrzeugdateien

  Dim sVerzeichnis$, sDatei$
  Dim wbZiel As Workbook, wbQuelle As Workbook
  Dim wksZiel As Worksheet, wksQuelle As Worksheet
  Dim ZeileZ&, FileCount&
  Dim Zelle As Range
  Const StartZelle$ = "K3" '1. Auszulesende Zelle in Tabelle 1
  Const Schritt& = 1 'Spaltenabstand der auszulesenden Zellen
  
  On Error GoTo Fehler
  'Suchverzeichnis auswahlen
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Bitte Ordner mit zu durchsuchenden Dateien wählen"
    .ButtonName = "Auswählen"
    If .Show = -1 Then
      sVerzeichnis = .SelectedItems(1)
      sDatei = Dir(sVerzeichnis & Application.PathSeparator & "*.xl*")
      If sDatei <> "" Then
        'neue Datei mit einem Tabellenblatt für Ergebnisdaten erstellen
        Set wbZiel = Workbooks.Add(Template:=xlWBATWorksheet)
        'Zieltabellenblatt Objektvariable zuweisen
        Set wksZiel = wbZiel.Worksheets(1)
        ZeileZ = 1
        With wksZiel
          'Titelzeile ausfüllen
          .Cells(ZeileZ, 1) = "Info"
          .Cells(ZeileZ, 2) = "Status offene Punkte"
          .Cells(ZeileZ, 3) = "Dateiname"
        End With
      End If
      Application.ScreenUpdating = False
      Do Until sDatei = ""
        FileCount = FileCount + 1
        Application.StatusBar = "Datei, laufende Nr. " & FileCount & " wird bearbeitet."
        'Quelldatei schreibgeschützt öffnen
        Set wbQuelle = Workbooks.Open( _
          Filename:=sVerzeichnis & Application.PathSeparator & sDatei, _
          ReadOnly:=True)
        'Tabelle1 Objektvariable zuweisen
        Set wksQuelle = wbQuelle.Worksheets(1)
        'Werte aus Blatt 1 auslesen
        Set Zelle = wksQuelle.Range(StartZelle)
        Do Until IsEmpty(Zelle)
          If Zelle.Value <> 0 Then
            ZeileZ = ZeileZ + 1
            With wksZiel
              'Info aus Zeile 1 eintragen
              .Cells(ZeileZ, 1) = wksQuelle.Cells(1, Zelle.Column).Value
              'Status offene Punkte
              .Cells(ZeileZ, 2) = Zelle.Value
              'Dateiname eintragen
              .Cells(ZeileZ, 3) = sDatei 'gespeicherter Dateiname
'              .Cells(ZeileZ, 3) = wksQuelle.Cells(1, 1).Value 'Dateinem in A1 des Quellblatts
            End With
          End If
          'Nächste Zelle setzen
          Set Zelle = Zelle.Offset(0, Schritt)
        Loop
        wbQuelle.Close SaveChanges:=False
        Set wksQuelle = Nothing
        Set wbQuelle = Nothing
        sDatei = Dir
      Loop
      Application.ScreenUpdating = True
      'MsgBox "Alle Dateien ausgelesen" (hier mit dem ' ausgeblendet, da nutzlos)
    End If
  End With
Fehler:
  With Err
    Select Case .Number
      Case 0 'alles OK
      Case Else
        Application.ScreenUpdating = True
        MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
        If Not wbQuelle Is Nothing Then wbQuelle.Close SaveChanges:=False
    End Select
  End With
  Set wbZiel = Nothing
  Set wbQuelle = Nothing
  Application.StatusBar = False
  
  
Application.ScreenUpdating = True

End Sub

  

Betrifft: AW: auslesen von dateien von: Oberschlumpf
Geschrieben am: 12.04.2014 10:45:55

Hi Tom

und wann kommt hier mal ne Antwort?
https://www.herber.de/forum/messages/1356978.html

Ciao
Thorsten


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 12.04.2014 12:48:15

Hallo,
ungetestet so. (siehe unten)

"Welche schnelleren Möglichkeiten gibt es"
Kommt darauf an ob die Tabellen alle gleich sind und welche Daten benötigt werden.
Wenn Du ein oder zwei Beispiele und beschreibst welche Daten benötigt werden und wo diese hin sollen,
könnte man mal versuche was einzubauen.

Sub DatenImportieren()
 
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual
 
 'Auslesen der einzelnen Fahrzeugdateien
 
   Dim sVerzeichnis$, sDatei$
   Dim wbZiel As Workbook, wbQuelle As Workbook
   Dim wksZiel As Worksheet, wksQuelle As Worksheet
   Dim ZeileZ&, FileCount&
   Dim Zelle As Range
   Const StartZelle$ = "K3" '1. Auszulesende Zelle in Tabelle 1
   Const Schritt& = 1 'Spaltenabstand der auszulesenden Zellen
   
   On Error GoTo Fehler
   'Suchverzeichnis auswahlen

       sVerzeichnis = "C:\Ordner" 'Hier Pfad angeben
       sDatei = Dir(sVerzeichnis & Application.PathSeparator & "*.xl*")
       If sDatei <> "" Then
         'neue Datei mit einem Tabellenblatt für Ergebnisdaten erstellen
         Set wbZiel = Workbooks.Add(Template:=xlWBATWorksheet)
         'Zieltabellenblatt Objektvariable zuweisen
         Set wksZiel = wbZiel.Worksheets(1)
         ZeileZ = 1
         With wksZiel
           'Titelzeile ausfüllen
           .Cells(ZeileZ, 1) = "Info"
           .Cells(ZeileZ, 2) = "Status offene Punkte"
           .Cells(ZeileZ, 3) = "Dateiname"
         End With
       End If
       Application.ScreenUpdating = False
       Do Until sDatei = ""
         FileCount = FileCount + 1
         Application.StatusBar = "Datei, laufende Nr. " & FileCount & " wird bearbeitet."
         'Quelldatei schreibgeschützt öffnen
         Set wbQuelle = Workbooks.Open( _
           Filename:=sVerzeichnis & Application.PathSeparator & sDatei, _
           ReadOnly:=True)
         'Tabelle1 Objektvariable zuweisen
         Set wksQuelle = wbQuelle.Worksheets(1)
         'Werte aus Blatt 1 auslesen
         Set Zelle = wksQuelle.Range(StartZelle)
         Do Until IsEmpty(Zelle)
           If Zelle.Value <> 0 Then
             ZeileZ = ZeileZ + 1
             With wksZiel
               'Info aus Zeile 1 eintragen
               .Cells(ZeileZ, 1) = wksQuelle.Cells(1, Zelle.Column).Value
               'Status offene Punkte
               .Cells(ZeileZ, 2) = Zelle.Value
               'Dateiname eintragen
               .Cells(ZeileZ, 3) = sDatei 'gespeicherter Dateiname
 '              .Cells(ZeileZ, 3) = wksQuelle.Cells(1, 1).Value 'Dateinem in A1 des Quellblatts
             End With
           End If
           'Nächste Zelle setzen
           Set Zelle = Zelle.Offset(0, Schritt)
         Loop
         wbQuelle.Close SaveChanges:=False
         Set wksQuelle = Nothing
         Set wbQuelle = Nothing
         sDatei = Dir
       Loop
       Application.ScreenUpdating = True
Fehler:
   With Err
     Select Case .Number
       Case 0 'alles OK
       Case Else
         Application.ScreenUpdating = True
         MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
         If Not wbQuelle Is Nothing Then wbQuelle.Close SaveChanges:=False
     End Select
   End With
   Set wbZiel = Nothing
   Set wbQuelle = Nothing
   Application.StatusBar = False
   
   
 Application.ScreenUpdating = True
 
End Sub
Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 12.04.2014 22:38:39

Hallo Tino,

vielen Dank, das funktioniert schon mal.

Hier mal das die Sheets die ich dafür verwende. Leider dauert die Berechnung sehr lange wenn einige Dateien eingespielt und ausgelesen werden. Das Auslesen muss immer wieder angestoßen werden, um zu sehen wie weit die Datei bereits gepflegt wurde.

Folgende Vorgensweise:
1. Button für Gesamtabruf ausführen in der Verwaltungsdatei: Tabelle "MAKRO_1_Daten"
2. Pfad angeben wo sich die Fahrzeugdatei befindet

Verwaltungsdatei:
https://www.herber.de/bbs/user/90129.zip

z.B. Fahrzeugdatei:
https://www.herber.de/bbs/user/90130.zip

Vielen Dank schon einmal vorab.

gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 13.04.2014 00:21:51

Hallo,
habe in die Datei was für die abfrage eingebaut, kannst mal versuchen ob dies schneller geht.
Im Modul1 müsstest Du den Pfad anpassen wo die Fahrzeugdateien sind.

https://www.herber.de/bbs/user/90131.zip


Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 13.04.2014 10:56:54

Hallo Tino,

wow ist super, geht ja jetzt richtig ab. Vielen Dank!!!!

Was meinst Du wie soll ich mit der Hyperlink-Erstellung und dem Anzeigen der ausgelesenen Werte in der Tabelle "externe Nachträge" weitermachen, damit das ganze nicht wieder ausgebremst wird?

gruß tom


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 14.04.2014 08:25:40

Hallo,
ich würde nur das nötigste einstellen.
Beispiel weil ich nicht alles benötigte kenne.
Pfad wo die Dateien liegen im Code wieder anpassen.
In der Tabelle externe Nachträge ist die Zeile 3 die Referenzzeile,
von dieser wird die Formatierung für die nachfolgenden verwendet.

https://www.herber.de/bbs/user/90142.xlsm

Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 14.04.2014 12:59:41

Hallo Tino,

langsam wir es richtig genial! Kein Vergleich zudem was ich vorher als Makro hatte!

Was jetzt noch nicht geht ist der Verweis auf die Fahrzeugdatei(en) mit dem Hyperlink. Kannst Du mir da noch etwas anpassen?

Bisher wurden die abgearbeiteten Fahrzeugdateien in einen Archiv verschoben und die ausgelesenen Werte aus der Fahrzeugdatei wie z.B. Kundenname, Fahrzeugnr. usw. blieben in dem Nachtragscockpit erhalten.
Dein Makro zeichnet die aktuellen Dateien auf die sich unter dem angegebenen Pfad befinden und die nicht mehr vorhandenen werden überschrieben/gelöscht.
Alle eingelesenen Einträge sollen im Nachtragscockpit erhalten bleiben, auch wenn sie verschoben werden in ein Archiv. Die neuen Fahrzeugdateien sollen immer unten angehängt werden.
Kannst Du mir Deine Datei noch einmal dahingehend abändern?
Oder kann man das in ein Archiv verschieben umgehen? Das Archiv wurde nur eingeführt, weil es mittlerweile ca. 900 Fahrzeugdateien gibt und die jedes Mal erneut einlesen zu viel Zeit in Anspruch nimmt, zudem geht der Hyperlink auf die Datei durch das Verschieben auch verloren.

Wäre nett wenn Du mir noch einmal helfen könntest.

Herzlichen Dank schon einmal vorab!!!!


grüsse Tom


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 15.04.2014 09:34:29

Hallo,
ich würde schon bei dieser menge bei einem Archiv bleiben.
Woran kann man den erkennen welche Dateien abgearbeitet sind und ins Archiv verschoben werden können?
Wenn man dies erkennen kann, könnte man diese Dateien automatisch verschieben und
die Daten in einer anderen Datei ablegen zBsp Archiv.xlsx.

Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 15.04.2014 10:47:18

Hi,

erkennen lässt es sich daran das im Nachtragscockpit in der Spalte AC "Freigabe..." ein Ja oder ein Nein geschrieben wird oder/und in der Spalte AD "Bewertungsdatum..." das akteulle Datum gesetzt wird. Beides erfolgt manuell.
In den Fahrzeugdateien selber gibt es bisher kein Feld das eindeutig die Freigabe kennzeichnet.

Gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 15.04.2014 11:15:00

Hallo,
heute komme ich nicht mehr dazu, werde mich morgen noch einmal melden!

Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 15.04.2014 14:03:30

Hallo Tino,

ja gerne ;-) keim Stress bin ja froh dass Du mir hilfst!!!

gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 16.04.2014 11:17:36

Hallo,
so habe mal was zusammengebaut.
Im Modul Modul3_Archiv musst Du den Pfad anpassen wo die Archiv-Datei liegen soll
(aktuell wird diese erstellt wo auch diese Datei liegt)
Und den Pfad wo die Archivdaten hin sollen auch anpassen (Ordner muss vorhanden sein).

Wie zuvor auch im Modul1 wieder den Pfad anpassen wo die Dateien liegen.

https://www.herber.de/bbs/user/90194.xlsm

Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 17.04.2014 07:28:18

Guten Morgen Tino,

funktioniert schon mal richtig super.

Was mir noch aufgefallen ist, die ausgelesenen Werte aus den Fahrzeugdateien werden in der Tabelle "externe Nachträge" nur in der ersten Zeile angezeigt, die nachfolgenden Positionen sind #NV.

Und wenn ich archiviere werden die Inhalte aus der geweiligen Zeile gelöscht. Ich benötige die Fahrzeugdatei selber nicht mehr bzw. sie wird archivier wegen der Laufzeit, aber in der Übersicht "externe Nachträge" muss der Eintrag bestehen bleiben.

Wenn ich es richtig verstehe muss ich nur den Pfad 1x in dem Modull anpassen (wo die Dateien abgelegt sind) und 1x im Modul3 (wohin die Dateien archiviert werden sollen).

'hier den Pfad angeben wo die Datein liegen
sPath = "G:\1 Forum\Lese_Excel_Daten\Daten\"

'wo die Daten fürs Archiv hin sollen, Ordner muss vorhanden sein!
sPathArchivDateien = "G:\1 Forum\Lese_Excel_Daten\Archiv\"
sPathArchivDateien = IIf(Right$(sPathArchivDateien, 1) = "\", sPathArchivDateien, sPathArchivDateien & "\")

Ich werde noch weiter testen un mich noch einmal melden.

Vielen Dank

Tom


P.S. wie kann ich mich erkenntlich zeigen für die tolle Arbeit?


  

Betrifft: AW: auslesen von dateien von: Tino
Geschrieben am: 17.04.2014 08:59:49

Hallo,
da hat sich doch ein Fehler eingeschlichen wegen dem #NV.

https://www.herber.de/bbs/user/90224.xlsm

Und ja mit dem anpassen des Pfades liegst Du richtig.

Gruß Tino


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 17.04.2014 09:46:58

Hallo,

ok, vielen Dank.

Hast Du noch eine Idee wie man trotz der Archivierung der Fahrzeugdatei, die Fahrzeugwerte in der Übersicht "externe Nachträge" behält?

Optimal wäre es den Hyperlink dann auf den Archiv Ordner zu bekommen und die Werte der Erstbewertung einzufrieren.

Grüsse

Tom


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 17.04.2014 11:58:53

Hallo noch einmal,

oh...übersehen, es wird eine zweite Datei mit den Archivdateien erstellt. Hm...eigentliche keine schlechte Idee....muss ich mir mal durch den Kopft gehen lassen und testen...

gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 17.04.2014 12:10:06


....also ich finde es spitzenmässig ;-) und der Abruf ist ja rasend schnell!!

Wenn die Archivdaten jetzt noch in einem eigenen Tabellenblatt in derselben Datei erstellt werden würden, dann bin ich am Ziel.

gruss tom


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 18.04.2014 18:14:49

Hallo,

so jetzt habe ich einiges durchgetestet. Zwei Dinge hätte ich noch ;-)
Der Kundenname in der Spalte I wird nicht mehr richtig angezeigt und in den leeren Spalten J, K usw... wird in jeder Zelle manuell etwas von mir eingepflegt. Wenn ich jetzt über den Butten Gesamtabruf aktualisiere werden meine eingefügten Informationen gelöscht. Kannst Du mir bitte das noch so anpassen, damit die Informationen erhalten bleiben?

Das mit dem Archiv ist echt super. Würde es aber gerne in der Nachtragsdatei in einer weiteren Tabelle integrieren wollen. Geht das überhaupt?

Gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 20.04.2014 22:22:02

Hallo,

so jetzt habe ich einiges durchgetestet. Zwei Dinge hätte ich noch ;-)
Der Kundenname in der Spalte I wird nicht mehr richtig angezeigt und in den leeren Spalten J, K usw... wird in jeder Zelle manuell etwas von mir eingepflegt. Wenn ich jetzt über den Butten Gesamtabruf aktualisiere werden meine eingefügten Informationen gelöscht. Kannst Du mir bitte das noch so anpassen, damit die Informationen erhalten bleiben?

Das mit dem Archiv ist echt super. Würde es aber gerne in der Nachtragsdatei in einer weiteren Tabelle integrieren wollen. Geht das überhaupt?

Gruß Tom


  

Betrifft: AW: auslesen von dateien von: Tom
Geschrieben am: 20.04.2014 22:29:49

Hallo Tino,

kannst du mir noch einmal helfen?

Gruß


 

Beiträge aus den Excel-Beispielen zum Thema "auslesen von dateien"