• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Datumverschil bestandsnamen via vba

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
865
Gebruikers downloaden een bestand van de server naar hun lokale pc.
Wanneer een nieuwe versie op de server geplaatst wordt dan wil ik hen hiervan verwittigen. Ik schreef hiervoor onderstaande code en plaatste die in ThisWorkbook. Toch gaat er wat fout want er verschijnt geen pop-up wanneer de versie op de server nieuwer is dan de lokale versie. De oorzaak zit wellicht in de code.
Kan iemand helpen aub? Bij voorbaat dank.

Code:
Private Sub workbook_open()
    Dim datum1, datum2 As Date
    Dim verschil As Integer
    datum1 = FileDateTime("\\svr001\data\QM 7.xls")
    datum2 = FileDateTime("c:\data\QM 7.xls")
    verschil = DateDiff("s", datum1, datum2)
    If verschil > 0 Then MsgBox "Er is een nieuwe versie op de server beschikbaar" & vbCrLf & vbCrLf & "Gelieve een update uit te voeren vanop uw bureaublad.", vbInformation
End Sub
 
De kleinste datum is wel Datum1?
 
Neen, Datum1 is de datum van het nieuwe bestand dat ik op de server plaats.
Gebruikers hebben dan de 'oude' versie lokaal staan (Datum2).
 
Dan moet het <0 zijn, anders.....
Code:
verschil = datediff("s",datum2,datum1)
 
Of gewoon:

Code:
Private Sub workbook_open()
  If FileDateTime("\\svr001\data\QM 7.xls") > FileDateTime("c:\data\QM 7.xls") Then FileCopy "\\svr001\data\QM 7.xls", "c:\data\QM 7.xls"
End Sub
 
En ook dan reageert excel niet :(

Ik zie wel via de verkenner dat bij openen van het lokale bestand de datum wijzigt naar het moment van openen .... zou dat de reden zijn? Dit betekent dan eigenlijk dat de oude versie die lokaal staat van een nieuwere datum voorzien wordt ... De oude versie is dan eigenlijk de nieuwste, getver :(

Kan ik dat omzeilen en hoe?

En net even uitgetest om het verschil te berekenen vanop een nieuw bestand ==> alles werkt prima. Blijft dus de vraag of het mogelijk is dit te testen met de macro binnen het bestand ....
 
Laatst bewerkt:
Open het bestand niet, maar gebruik een kopie:

Code:
Sub M_snb()
  workbooks.add "c:\data\QM 7.xls"
End Sub

Je redenering kan niet kloppen: bij het openen van een bestand heeft dat bestand nooit een datum na een bestand dat eerder is opgeslagen. Tenzij het centrale bestand geplaatst is terwijl het lokale bestand open was en later opgeslagen is.
 
Laatst bewerkt:
Het is niet makkelijk te omschrijven

start: mijn lokaal bestand, ik pas dit aan en sla het lokaal op = tijdstip 1
Ik kopieer dit bestand naar de server = nog altijd tijdstip 1
Een gebruiker doet een manuele update vanop de server en krijgt het bestand lokaal binnen = tijdstip 1
....
Iemand vraagt een aanpassing:
ik pas mijn lokaal bestand aan en sla dit lokaal op = tijdstip 2
ik kopieer dit lokale bestand naar de server = tijdstip 2


Op dit punt wou/wil ik ingrijpen: het bestand op de server is nieuwer dan het lokale bestand van alle gebruikers (± 30) (op uitzondering van mezelf)

En dit wil ik doorgeven aan de gebruikers. Als zij hun lokale bestand openen dan wordt de filedatum aangepast naar de huidige tijd en dan komt er geen (logische) verwittiging. Zoals je aangeeft moet ik via een andere weg proberen. Ik test jouw voorstel uit.

Dank !
 
Vraag eens op:

Code:
Msgbox verschil
 
Ik heb een bestand QM 7 update.xls gemaakt. Dit bestand vernieuw ik op de server zodat er een nieuwe bestandstijd ontstaat. In bestand QM 7.xls plaats ik dan de code in ThisWorkbook

Code:
Private Sub workbook_open()

    Dim svrdate, lokdate As Date
    Dim verschil As Integer
    
    svrdate = FileDateTime("\\svr001\data\QM 7 update.xlsx")
    lokdate = FileDateTime("c:\data\QM 7 update.xlsx")
    
    verschil = DateDiff("s", lokdate, svrdate)
    If verschil > 1 Then MsgBox "Er is een nieuwe versie van data SAP beschikbaar." _
    & vbCrLf & vbCrLf & "Sluit dit bestand af." & vbCrLf & vbCrLf & _
    "Gelieve een update uit te voeren vanop uw bureaublad.", vbInformation

End Sub

Dank allen voor de hulp !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan