• 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.

bestand van naar veranderen en na gebruik verwijderen

Status
Niet open voor verdere reacties.

longron

Gebruiker
Lid geworden
2 apr 2007
Berichten
365
Beste alle,

Ik gebruik een excel bestand wat door meerder mensen tegelijk moet kunnen worden gebruikt worden.
Bestand wordt niet bewerkt en opgeslagen worden. Bestand wordt steeds gecopieerd vanaf een andere plek waar het wel wordt bewerkt.
Bestand wordt gebruikt binnen een netwerk.
Ik dacht bij het openen het bestand het bestand van naar te veranderen en op te slaan op de persoonlijke drive en daarna bij het afsluiten het bestand te verwijderen vanuit VBS.
echter heb ik geen idee hoe ik het laatste kan doen.
Graag jullie advies.

Thanks en goed weekend.

Ronald
 
Dat ziet er interessant uit.
Ga ermee aan de slag.
Thanks Edmoor
 
Ik probeer het volgende: Bestand heet test1.xlsm

Sub ShutDown()

Dim MsgB

MsgB = "MsgBox " & Chr(34) & "Het bestand wordt verwijderd" & Chr(34)
vbs = Environ("temp") & "\info.vbs"
Open vbs For Output As #1
Print #1, MsgB
Print #2, Delete; "Test1.xlsm"
Close #1
Shell ("wscript " & vbs)
Sluit = 1
Application.Quit
End Sub

Ik heb bijzonder weinig ervaring met VBS bestanden

Graag advies

Groetjes
Ronald
 
Waarom VBS?
In Excel heet het VBA.
Daarin gebruik je de Kill opdracht waar ik naar verwees.

In VBS zou het dit zijn:
Code:
Dim FS
Set FS = CreateObject("Scripting.FileSystemObject")
If FS.FileExists("Test1.xlsm") Then
   FS.DeleteFile "Test1.xlsm"
    MsgBox("Bestand verwijderd.")
End If

In VBA:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Kill "Test1.xlsm"
End Sub
 
Laatst bewerkt:
Oke, de situatie is als volgt:

In een bestand wordt gemuteerd door 1 persoon.

Dit bestand wordt gecopieerd vanuit VBA naar een andere locatie binnen het netwerk.
Daar zijn verschillende mensen die hetzelfde bestand in op hetzelfde moment gebruiken.
daarom laat ik de naam en locatie zodra iemand het bestand opent aanpassen. Daardoor kunnen mensen hetzelfde document openen.
Echter moet na het gebruik het bestand zichzelf verwijderen uit de persoonlijke map.
Ik wil dat het bestand ook een andere naam krijgt en wordt opgeslagen zodat de eerste persoon die het bestand muteert op iedere moment een aangepaste versie kan neerzetten en zodat de info het beste accuraat is.

Als je er een ander beter idee over hebt hoor ik het graag.

Groetjes
Ronald
Ps de bestanden die dus door de andere medewerkers worden bewerkt worden niet aangepast door die medewerkers.
 
Dat kan in VBA en daarvoor gebruik je de opdrachten in de links die ik al plaatste.
Een extra zou nog de SaveCopyAs opdracht zijn.
Dat kan je op diezelfde site vinden.
 
Laatst bewerkt:
Oke,
maar kan ik dan vanuit vba het document wat ik open heb staan afsluiten en verwijderen.
Een ander kan ik me voorstellen maar het bestand waar ik in "werk" lijkt me van niet. Maar als ik me vergis zou het mooi zijn.
ik probeer het nu maar hij genereert een fout.
 
Een bestand dat open is kan je uiteraard niet verwijderen.
Je kan hem opslaan met een andere naam met SaveAs.
Vervolgens kan je dan wel het document met de eerdere naam verwijderen.
 
oke., maar dat moet niet. het orgineel moet blijven bestaan. Het "tijdelijke" moet weer verwijderd worden.
Daarom dacht ik iets met een VBS script te kunnen doen...........als ik snap hoe dat werkt :(
 
Een open bestand kan je nooit verwijderen.
Niet met VBA, niet met VBS, nergens mee.
Het is niet VBA die dat belet maar het filesystem.
 
oke, dat snap ik, denk dat ik het verkeerd uitleg.

Het excel bestand wordt geopend. hernoemd en opgeslagen op een andere plek.
Daarna wordt het afgesloten en door vbs verwijderd.

Dus de VBS moet vanuit Excel VBA worden aangemaakt.

Dus pas als het bestand gesloten is moet het worden verwijderd....
 
Ik begrijp niet waarom je VBS wilt gebruiken als je VBA voorhanden hebt.

Wie of wat opent dan het Excel bestand?
 
Laatst bewerkt:
omdat ik één document heb wat moet worden verwijderd vanuit zijn eigen macro's nadat het is gesloten en ik denk dat dat niet kan zolang je het wilt doen vanuit het bestand zelf tenzij je vbs gebruikt Je maakt dus eigenlijk een batch bestand nadat het document is gesloten.
Zal dus waarschijlijk ook en teller in moeten zitten die wat gaat doen als het document is gesloten.
Maar omdat er niets wordt opgeslagen bij het afsluiten zal het redelijk snel gaan.
 
Maar wie of wat opent dan het Excel bestand?
 
oke,
er is een bestand waarin ik gegevens zet. Het roosterprogramma. Dat wordt nadat het is aangepast gecopieerd vanuit VBA naar een andere locatie.
daar hebben meerdere mensen toegang tot het bestand en die willen eop het zelfde moment kijken. Dus dan wordt het bestand door de 1ste geopend en vanuit het bestand zelf hernoemd en opgeslagen. Hierdoor blijft de copy beschikbaar voor andere. Als iemand andere het opent wordt het weer hernoemd en opgeslagen op diegene zijn eigen dir.
Zodra het wordt afgesloten moet het zichzelf verwijderen. ( vanuit vbs dus )
 
Er hoeft helemaal niet voor elke gebruiker die wil kijken een kopie gemaakt te worden. Als mensen toch niet mogen wijzigen sla die kopie dan op als alleen lezen (dat regel je dan via de VBA van het orginele bestand)

Daarna kunnen zoveel mensen als je wilt die kopie openen als alleen lezen en inzien
 
Oke.
maar dat is niet helemaal handig.
Bij het openen wordt gelijk gevraagd of je het bestand alleen-lezen wilt openen.
Het is echter een bestand met een eigen menu en allerlei macro's
Als je hem niet als alleen lezen opent kun je hem weer opslaan.
Als hij wordt gebruikt dan krijgt een andere weer de melding dat hij in gebruik is....
en dat is juist niet de bedoeling.
 
Er zijn meerdere opties

Volgens mij als je zorgt dat het kopiebestand (Dat door VBA wordt gemaakt uit het orgineel) in een netwerkdirectory komt te staan waar medewerkers alleen lezen toegang hebben dan krijg je de alleen lezen melding niet maar men kan niet opslaan naar de netwerklocatie.

Andere optie is dat je het alleen lezen afdwingt door een workbook_open event macro
Code:
Private Sub Workbook_Open()

If Application.UserName <> "YourUserName" Then

    ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly

End If

End Sub

Een vergelijkbare code kun je dan gebruiken bij het BeforeSave_Event
simpele check of de huidige gebruiker van het document mag opslaan of niet.

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

If Not Application.UserName = "Roel" Then
    Cancel = True
    MsgBox "Eigen versie opslaan is niet toegestaan"
End If
End Sub

Probeer het eens met deze bijlage. Die zet bij openen de mode naar readonly also het niet mijn gebruikersnaam heeft en als je probeert op te slaan zonder mijn gebruikersnaam krijg je een messagebox dat opslaan niet mag.

Volgens mij zijn er ook nog mogelijkheden als het delen via sharepoint gaat om de sheet meer te presenteren als webformulier en men feitelijk niet de sheet opent maar alleen gegevens ophaalt via een een speciaal formulier, maar ik heb geen kennis van hoe je dat bouwt of dat jullie uberhaupt met sharepoint werken.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan