Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Daten aus anderer Datei aktualisieren

VBA Daten aus anderer Datei aktualisieren
23.10.2018 16:12:44
SonOdin
Hallo Excel und VB-Profis,
ich habe ein kleines Problem welches ich nicht lösen kann und hoffe, dass ihr mir helfen könnt:
Es gibt eine Excel-Datei, „Excel-Tool“, in welcher sich ein Tabellenblatt „Daten“ befindet. In diesem Tabelenblatt Daten befinden sich einige Spalten mit der Überschrift Name, Adresse, Telefon und entsprechenden Einträgen in den einzelnen Spalten.
In einer zweiten Excel-Datei befinden sich mehrere Spalten, unter anderem auch Name, Adresse und Telefon aber auch PLZ, Schuhgröße und einige andere. Problem dabei ist, dass diese zweite Datei immer anders heißt, z.B. report123456 oder report 12347777, auch das Tabellenblatt heißt nicht immer gleich, es ist allerdings immer nur ein Tabelenblatt in der Datei vorhanden. Die Datei liegt jedoch immer im selben Ordner „report“ auf dem Laufwerk C:.
Nun benötige ich in der Datei „Excel-Tool“ einen Button, und durch drücken dieses Buttons sollen sich die Spalten Name, Adresse und Telefon aktualisieren und sich die neuen Daten aus dem neusten Report im Ordner Report „ziehen“.
Ich hoffe das ist verständlich.
Vielen Dank im Voraus für eure Hilfe.
MfG
SonOdin

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Daten aus anderer Datei aktualisieren
23.10.2018 16:18:56
UweD
Hallo
ist immer nur EINE Datei in dem Verzeichnis, oder wie soll entschieden werden, welche genommen werden soll?
LG UweD
AW: VBA Daten aus anderer Datei aktualisieren
24.10.2018 09:02:39
SonOdin
Hallo Uwe,
ja genau.
Es befindet sich immer nur eine Datei in dem Verzeichnis.
Ginge es denn auch, dass immer die neuste Datei genommen wird, wenn es doch mal mehrere sind?
sollte nihct vorkommen, aber wenn mal einer nicht aufpasst und vergisst die alte Datei zu löschen...
MfG
SonOdin
AW: VBA Daten aus anderer Datei aktualisieren
24.10.2018 11:23:43
UweD
Hallo
in ein Modul kopieren und dann deinem Button zuordnen
Zum Ermitteln des Blattnamens mus die gefundene Datei kurz geöffnet und wieder geschlossen werden
Modul1
Option Explicit 
 
Sub Daten_aus_neuster_Datei() 
    Dim sDatei As String, sPath As String 
    Dim sExt As String, sPre As String 
    Dim StoreDate As Date, StoreName As String 
     
    Dim WB, TB1, sTB2 
    Dim dLR As Double, iLC As Integer, iSP As Integer 
     
    '**** Variablen setzen 
    sPath = "X:\Temp\report\" 'mit '\' am Ende 
    sExt = "*.xls" 'Dateierweiterung 
    sPre = "report*" 'Dateiname Anfang 
    Set TB1 = Sheets("Daten") 
    iSP = 1 'Spalte mit Name 
    '**** 
     
    If Dir(sPath, vbDirectory) = "" Then 
        MsgBox "Das Verzeichnis: '" & sPath & "' konnte nicht gefunden werden! " 
        Exit Sub 
    Else 
        If Dir(sPath & sPre & sExt) = "" Then 
            MsgBox "Keine Dateien dieses Typs '" & sExt & "' gefunden" 
            Exit Sub 
        End If 
        sDatei = Dir(sPath & sPre & sExt) 
        StoreDate = FileDateTime(sPath & sDatei) 
    End If 
     
    'Jüngste Datei finden 
    Do While (sDatei <> "") 
        If FileDateTime(sPath & sDatei) > StoreDate Then 
            StoreDate = FileDateTime(sPath & sDatei) 
            StoreName = sDatei 
        End If 
        sDatei = Dir() 'Nächste Datei 
    Loop 
     
    'Datei öffnen, Name der ersten Tabelle lesen 
    Set WB = Workbooks.Open(sPath & StoreName) 
    sTB2 = WB.Worksheets(1).Name 
    WB.Close 
     
    'Formeln für Sverweis setzen 
    With TB1 
        dLR = .Cells(.Rows.Count, iSP).End(xlUp).Row 'letzte Zeile der Spalte 
        iLC = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte Spalte der Überschrift 
         
        With .Range(.Cells(2, iSP + 1), .Cells(dLR, iLC)) 
            'Formeln 
            .FormulaR1C1 = _
                "=IFERROR(VLOOKUP(RC1,'" & sPath & "[" & StoreName & "]" & sTB2 & _
                "'!C1:C26,MATCH(R1C,'" & sPath & "[" & StoreName & "]" & sTB2 & "'!R1,0),0),"""")" 
                 
            'Formeln in Wert 
            .Value = .Value 
        End With 
    End With 
     
    'Info 
    MsgBox ("Die jüngste Datei ist: '" & StoreName & "' , erstellt am " & StoreDate) 
End Sub 

LG UweD
Anzeige
AW: VBA Daten aus anderer Datei aktualisieren
24.10.2018 15:58:57
SonOdin
Hallo Uwe,
ich bekomme leider die Fehlermeldung:
Laufzeitfehler '1004':
Wir konnten 'C:\report\' nicht finden. Wurde das Objekt vielleicht verschoben, umbenannt oder gelöscht?
Ich habe zuerst dein code meinem Button zugewiesen, dann die report-Datei kurz geöffnet und wieder geschlossen und anschließend den Button geklickt.
Im Debugger markiert er die Zeile:
Set WB = Workbooks.Open(sPath & StoreName)
Ich habe deinen Code so meinem Button zugewiesen:
Private Sub Aktualisieren_Click()
Daten_aus_neuster_Datei
End Sub
Danke für deine Hilfe.
VG
SonOdin
Anzeige
AW: VBA Daten aus anderer Datei aktualisieren
24.10.2018 16:14:09
UweD
Hallo
Du kannst dem Button doch direkt mein Makro zuweisen.
- Rechtclick auf den Button usw.
Hast du im Code auch das Verzeichnis abgeändert?
Eingestellt ist da MEIN ÜBUNGSVERZEICHNIS
LG UweD
AW: VBA Daten aus anderer Datei aktualisieren
24.10.2018 16:20:51
SonOdin
Hallo Uwe,
danke für die schnelle Antwort.
Verzeichnisse sind natürlich angepasst.
Wenn ich dein Script direkt dem Button zuweise bekomme ich nur eine Fehlermeldung mit rotem X und 400 im Text. :-(
Sorry bin blutiger VBA Anfänger.
VG
SonOdin
AW: VBA Daten aus anderer Datei aktualisieren
25.10.2018 09:32:44
UweD
Lad mal eine abgespeckte Musterdatei hoch
AW: VBA Daten aus anderer Datei aktualisieren
26.10.2018 13:00:22
UweD
Hallo nochmal
Der Fehler trat auf, wenn nur eine Datei im reportverzeichnis lag (Zum Testen hatte ich bei mir natürlich Mehrere)
habe ich jetzt behoben.
Option Explicit
 
Sub Daten_aus_neuster_Datei()
    Dim sDatei As String, sPath As String
    Dim sExt As String, sPre As String
    Dim StoreDate As Date, StoreName As String
     
    Dim WB, TB1, sTB2
    Dim dLR As Double, iLC As Integer, iSP As Integer, iZe As Integer
     
    '**** Variablen setzen 
    sPath = "C:\report\" 'mit '\' am Ende 
    sPath = "x:\Temp\report\" 'mit '\' am Ende 
    sExt = "*.xls" 'Dateierweiterung 
    sPre = "report*" 'Dateiname Anfang 
    Set TB1 = Sheets("Daten")
    iSP = 1 'Spalte mit Name 
    iZe = 2 'erste DatenZeile 
    '**** 
     
    If Dir(sPath, vbDirectory) = "" Then
        MsgBox "Das Verzeichnis: '" & sPath & "' konnte nicht gefunden werden! "
        Exit Sub
    Else
        If Dir(sPath & sPre & sExt) = "" Then
            MsgBox "Keine Dateien dieses Typs '" & sExt & "' gefunden"
            Exit Sub
        End If
        sDatei = Dir(sPath & sPre & sExt)
        StoreName = sDatei
        StoreDate = FileDateTime(sPath & sDatei)
    End If
     
    'Jüngste Datei finden 
    Do While sDatei <> ""
        If FileDateTime(sPath & sDatei) > StoreDate Then
            StoreDate = FileDateTime(sPath & sDatei)
        End If
        sDatei = Dir() 'Nächste Datei 
    Loop
     
    'Datei öffnen, Name der ersten Tabelle lesen 
    Set WB = Workbooks.Open(sPath & StoreName)
    sTB2 = WB.Worksheets(1).Name
    WB.Close
     
    'Formeln für Sverweis setzen 
    With TB1
        dLR = .Cells(.Rows.Count, iSP).End(xlUp).Row 'letzte Zeile der Spalte 
        dLR = WorksheetFunction.Max(dLR, iZe)
        
        iLC = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte Spalte der Überschrift 
         
        With .Range(.Cells(2, iSP + 1), .Cells(dLR, iLC))
            'Formeln 
            .FormulaR1C1 = _
                "=IFERROR(VLOOKUP(RC1,'" & sPath & "[" & StoreName & "]" & sTB2 & _
                "'!C1:C26,MATCH(R1C,'" & sPath & "[" & StoreName & "]" & sTB2 & "'!R1,0),0),"""")"
                 
            'Formeln in Wert 
            .Value = .Value
        End With
    End With
     
    'Info 
    MsgBox ("Die jüngste Datei ist: '" & StoreName & "' , erstellt am " & StoreDate)
End Sub

- Du hast den Code in DieseArbeitsmappe gelegt.
- Geht zwar, ist aber ungewöhnlich. Normal gehören diese Art Makros in ein Modul
LG UweD
Anzeige
AW: VBA Daten aus anderer Datei aktualisieren
26.10.2018 13:45:11
SonOdin
Hi Uwe,
danke dir.
Jetzt kommt kein Fehler mehr. Er öffnet ein Infofeld mit dem Inhalt, dass eine Datei gefunden wurde:
Die jüngste Datei ist: report.xls erstellt am 25.10.2018 13:04:27.
Aber er füllt nicht die Datei Excel-Tool - Tabellenblatt: Daten, mit dem Inhalt aus der Datei report.
Die Splaten bleiben leer, nur die Überschriften und der Button bleiben bestehen.
Habe ich was falsch gemacht?
Danke dir nochmal und hab ein schönes Wochenende.
VG
SonOdin
AW: VBA Daten aus anderer Datei aktualisieren
26.10.2018 15:15:57
UweD
Hallo
&GT&GT jetzt kommt kein Fehler mehr. Er öffnet ein Infofeld mit dem Inhalt, dass eine Datei gefunden wurde:
Die jüngste Datei ist: report.xls erstellt am 25.10.2018 13:04:27.

mach ein ' vor die vorletzte Zeile und die Info bleibt aus.


&GT&GT Die Splaten bleiben leer, nur die Überschriften und der Button bleiben bestehen.
Ich war bisher davon augegangen, dass du in Spalte A bereits Einträge stehen hast.
Wenn das des Fall ist, dann wird ab Spalte B auch was angezeigt.
Nichts siehst du, wenn in A auch nichts steht.
LG UweD
Anzeige
AW: VBA Daten aus anderer Datei aktualisieren
29.10.2018 15:46:49
SonOdin
Hi Uwe,
ich hoffe du hattest ein schönes Wochenende.
Ok mein Fehler. Ich habe mich vielleicht ein bisschen unverständlich ausgedrückt:
"Excel-Tool" muss die Überschriften der Spalten mit "report" vergleichen und wenn sie gleich sind, den unter der Überschrift stehenden Inhalt übernehmen.
In diesem Beispiel würde durch klicken des Buttons schaltfläche1 in "Excel-Tool" der Inhalt aus "report" unter Name, Telefon und PLZ übernommen werden, Schuhgröße und Ort nicht da diese beiden Überschriften nicht in "Excel-Tool" auftauchen.
Dabei spielt es keine Rolle ob in Excel-Tool schon was steht oder nicht. Steht dort schon etwas wird es überschrieben. Die Überschriften müssen natürlcih stehen bleiben. Es dürfen nur die neusten Daten aus der neusten "report" Datei erscheinen. Alte Daten aus "Excel-Tool" müssen überschrieben oder gelöscht werden.
Ich hoffe das ist jetzt etwas verständlicher.
Vielen Dank.
MfG
SonOdin
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge