Microsoft Excel

Herbers Excel/VBA-Archiv

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

Daten aus neuester Datei wenn geschlossen auslesen


Betrifft: Daten aus neuester Datei wenn geschlossen auslesen von: max hof
Geschrieben am: 04.12.2017 11:41:11

hi, habe folgendes Problem:
ich muss aus einem Ordner die neueste Datei auslesen (für jeden Monat wird automatisch eine neue erstellt mir jeweiligen Namen (....10-....;....11-....;...)
Ich habe mir schon aus ein paar Programmschnitzeln etwas zusammengebastelt, was aber nicht ganz optimal ist:

Sub DateienAuflisten()

Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object

Set objFileSystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFileSystem.GetFolder("C:\Users\ElAu\Desktop\Maxi\Excel\E1 Täglich\")
Set objDateienliste = objVerzeichnis.Files

lngZeile = 10

For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei

End Sub

Public Function GetDataClosedWB(SourcePath As String, _
                                 SourceFile As String, _
                                 sourceSheet As String, _
                                 SourceRange As String, _
                                 TargetRange As Range) As Boolean


 Dim strQuelle                 As String
 Dim Zeilen                    As Long
 Dim Spalten                   As Byte

     On Error GoTo InvalidInput

     strQuelle = "'" & SourcePath & "[" & Replace(SourceFile, "'", "''") & "]" & _
                 sourceSheet & "'!" & _
                 Range(SourceRange).Cells(1, 1).Address(0, 0)

     Zeilen = Range(SourceRange).Rows.Count
     Spalten = Range(SourceRange).Columns.Count

     With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
         .Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
         .Value = .Value
     End With

     GetDataClosedWB = True
     Exit Function

InvalidInput:
     MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
            vbExclamation, "Get data from closed Workbook"
     GetDataClosedWB = False
 End Function





Public Sub HoleDaten3()
 Dim Pfad            As String
 Dim Dateiname       As String
 Dim Blatt           As String
 Dim Zellen As String
 Dim Neueste_Datei As Variant
 
     Neueste_Datei = Workbooks("Dragramm Goldi.xlsm").Worksheets("Tabelle1").Range("A16").Value
     Pfad = "C:\Users\ElAu\Desktop\Maxi\Excel\E1 Täglich\"
     Dateiname = Neueste_Datei
     Blatt = "2017-10 E1 Täglich"
     Zellen = "C2:BN3000"

     If GetDataClosedWB(Pfad, _
             Dateiname, _
             Blatt, _
             Zellen, _
             Worksheets("Tabelle1").Range("C2:BN3000")) Then
         MsgBox "Daten importiert"
     End If
 End Sub
Es kopiert mir zwar die Dateien aus, aus der neuesten, aber nur wenn diese offen ist, was für mich aber keine Lösung ist, da die Datei unbedingt geschlossen bleiben muss! Und dass mir ständig die Dateinamen in die Zellen geschrieben werden ist auch noch nicht perfekt, mir würde es reichen wenn es mir NUR die neueste Datei auslesen würde und mir den angegebenen Bereich in meine "Tabelle1" kopiert, damit ich damit weiter arbeiten kann.

Vielen dank im voraus!

MfG Max

  

Betrifft: AW: Daten aus neuester Datei wenn geschlossen auslesen von: guenni
Geschrieben am: 06.12.2017 13:19:18

Hallo Max,
Damit das mit den externen Bezügen auf geschlossene Datei klappt, musst Du auf die Wenn-Abfrage verzichten, und eine 0 als Ergebnis bei leerer Zelle in Kauf nehmen.
Da kannst Du nachträglich die Zellen prüfen und bei 0 löschen, oder wie ich eine bedingte Formatierung verwenden, die beim Wert 0 die Schriftfarbe auf weiß setzt.
Hilft Dir das?



Beiträge aus den Excel-Beispielen zum Thema "Daten aus neuester Datei wenn geschlossen auslesen"