Liebe Leser,
als neues Forumsmitglied bitte ich um Eure Hilfe.
Meine Problematik ist folgende:
Meine Excel-VBA Anwendung schaut beim Start (Workbook_Open) in einem lokalen Ordner nach und prüft alle enthaltenen Dateien auf ein neues Update. Eine solche Updatedatei beginnt mit einem Zeitstempel (z.B. 201402110943-BestellverwaltungUpdate.xlsm). Ist dieser jüngeren Datums als der in der Anwendung gespeicherte Zeitstempel [UpdDatei], wird dem Benutzer das Update angeboten. Wenn es ausgeführt wird, wird der aktuelle Zeitstempel gespeichert, so dass beim Neustart der Anwendung ein Update nicht mehr angeboten wird bis ein neueres Update vorliegt.
Bisher habe ich den (wenigen) Anwendern die Updatedatei per mail zugeschickt. Sie mussten diese in einen festgelegten Ordner [BLZFILE] (den die Anwendung findet) abspeichern.
Nun möchte ich die Datei in eine Amazoncloud laden und dort freigeben.
Mit dem Tipp 1942 konnte ich die Datei reibungslos herunterladen und im Zielordner speichern (im Code hat der Debugger (Excel2010) die Zeile "Screen.MousePointer = vbHourglass" angemeckert, ich habe sie auskommentiert). Allerdings muss ich den Namen der Datei angeben.
Gibt es einen Code, der nacheinander aus dem Cloudverzeichnis die Dateinamen ausliest?
Ich könnte dann jeden Dateinamen prüfen, ob es ein neues Update ist und erst dann herunterladen, wenn dies zutrifft.
Für die lokale Lösung habe ich folgenden Code
Dim fs As Object, fVerz As Object, fDatei As Object, l%
Dim fdateien As Object, strDat$, strDat2$, Ztest As Boolean
Dim letztesUpdate, upd As Boolean, AktUpDatei$
Dim Pfad$
upd = False
Set fs = CreateObject("scripting.FileSystemObject")
strDat = [BLZFILE].Value 'Pfad, in dem die Updatedateien liegen
l = Len(strDat)
strDat = Left(strDat, l - 8) 'schneidet Datei weg
strDatUP = strDat
Set fVerz = fs.getFolder(strDat)
Set fdateien = fVerz.Files
letztesUpdate = [UpdDatei].Value 'hier ist der Zeitstempel des letzten
' Updates hinterlegt
letztesUpdate = str(letztesUpdate)
letztesUpdate = Trim(letztesUpdate) 'Umwandlung in Stringkette
For Each fDatei In fdateien
If InStr(fDatei, "") > 0 Then 'liest nacheinander Dateien ein
strDat = fDatei.Name
strDat2 = Left(strDat, 12) 'schneidet nach 12 Zeichen ab
Ztest = IsNumeric(strDat2) 'testet, ob Zahlen
If Ztest = True Then
strDat2 = CDbl(strDat2)
If letztesUpdate < strDat2 Then upd = True: Adminkennung = Mid( _
strDat, 13, 1): AktUpDatei = fDatei 'es wurde
' ein neues Update gefunden
End If
End If
Next fDatei
'wenn upd auf True steht, wurde ein neues Update gefunden (die Adminkennung dient dazu, das Update ohne Meldungsboxen durchzuführen)
Ich erbitte hier Eure Hilfe, da ich mit dem Internethandling mittels VBA keine Erfahrung habe.
LG alfred46 |