Microsoft Excel

Herbers Excel/VBA-Archiv

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

Daten in abh. vom datum öffnen | Herbers Excel-Forum


Betrifft: Daten in abh. vom datum öffnen von: Kris
Geschrieben am: 27.01.2010 17:13:45

Hallo zusammen,

habe folgendes problem:

Ich habe ein tool in excel konstruiert, dieses tool vgl. zwei datensätze, aus zwei aufeinander folgenden wochen, also bspw. die aktuelle woche mit der vorherigen woche. dabei werden die daten aus geschlossenen mappen eingelesen. die dateinamen enthalten dabei das datum, an dem die daten erstellt wurden (zB. mappe_2009.10.12).

nun möchte ich, wenn ich die daten eines worksheets (zb. aus mappe_2009.10.12) in worksheet1 importiere, dass ich dann automatisch die daten nächst "kleineren" datum (mappe_2009.10.02) in worsheet2 importiere! alle datensätze sind in einem ordner gespeichert und es gilt quasi beim importieren der ausgewählten datei automatisch einen abgleich aller vorhandenen mappen anhand des datums vorzunehmen und das nächst zurückliegende datum automatisch mit zu importieren!

die gestaltung der dateinamen kann ich auch ändern, denkbar waere auch eine zuordnung über die kalenderwoche, diese kann im dateinamen, als auch im worksheet selbst untergebracht werden. eigentlich eine aufgabe für access aber sollte auch mit excel funktionieren.

also im sinne von:

With ActiveWorkbook.Worksheets(1).Range("A1:S500")

.FormulaArray = "='c:\temp\[Mappe_2009.10.12.xls]Tabelle1'!A1:S500"

.Value = .Value

End With

...jetzt soll anhand des datums von mappe_2009.10.12 ein vergleich mit allen vorhandenen dateien in dem ordner gemacht werden und die daten des am nächsten zurückliegende datum ins worksheet2 kopiert werden! (oder wenn kalenderwoche 34 in worksheet1 kopiert, dann die nächst zurückliegende kalenderwoche z.b. 32 in ws2 kopieren)

With ActiveWorkbook.Worksheets(2).Range("A1:S500")

.FormulaArray = "='c:\temp\[Mappe_2009.10.02.xls]Tabelle1'!A1:S500"

.Value = .Value

End With

hoffe, ihr versteht was ich meine!!

vielen dank im voraus!

gruss kris

  

Betrifft: AW: Daten in abh. vom datum öffnen von: fcs
Geschrieben am: 28.01.2010 17:20:08

Hallo kris,

verwende in Dateinamen keine Punkte (.) als Trennzeichen im Datum. Das bereitet bei der Suche nach Dateien gelegentlich Probleme. Bindestrich ist besser oder ganz ohne Trennzeichen.

Das Makro zur Ermittlung des gewünschten Dateinamens bzw. der Datei mit dem nächst früheren Datum sieht dann etwa wie folgt aus.

Gruß
Franz

Sub WertePerFormelHolen()
  Dim sDatum As String, dDatum As Date, sDatei As String, dDateiVorher As Date
  Dim sVerzeichnis As String, sDateiQuelle As String
  sVerzeichnis = "C:\temp" 'Verzeichnis mit den Dateien
  sVerzeichnis = "C:\Lokale Daten\Test\Zwischenordner"
  sDateiQuelle = "Mappe_" 'Anfang des Quelldateinamens vor dem Datum
  
  sDatum = "2009-10-12" 'Datum der datei für Blatt 1 - ggf. über Inputbox eingeben
  
  dDatum = CDate(sDatum)
  'Werte nach Blatt 1 holen
  With ActiveWorkbook.Worksheets(1).Range("A1:S500")
    .FormulaArray = "='" & sVerzeichnis & "\[" & sDateiQuelle & sDatum & ".xls]Tabelle1'!A1: _
S500"
    .Value = .Value
  End With
  
  dDateiVorher = 1 'Startwert für Datei mit früherem Datum
  'Dateien mit Namensschema im Verzeichnis suchen
  sDatei = Dir(sVerzeichnis & "\" & sDateiQuelle & "????-??-??.xl*")
  Do Until sDatei = ""
    'Datum aus Dateinamen ausschneiden
    sDatum = Mid(sDatei, Len(sDateiQuelle) + 1, 10)
    'Datum gegen bereits ermitteltes früheres Datum vergleichen
    If CDate(sDatum) < dDatum And CDate(sDatum) > dDateiVorher Then
      dDateiVorher = CDate(sDatum)
    End If
    'nächste datei
    sDatei = Dir
  Loop
  If dDateiVorher = 1 Then
    MsgBox "Keine frühere Datei gefunden", vbOKOnly + vbInformation
  Else
    'Werte nach Blatt 2 holen
    With ActiveWorkbook.Worksheets(2).Range("A1:S500")
      .FormulaArray = "='" & sVerzeichnis & "\[" & sDateiQuelle & _
            Format(dDateiVorher, "YYYY-MM-DD") & ".xls]Tabelle1'!A1:S500"
      .Value = .Value
    End With
  End If

End Sub



Beiträge aus den Excel-Beispielen zum Thema "Daten in abh. vom datum öffnen"