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

VBA controle op geopend bestand en zoja deze dan automatisch sluiten

Status
Niet open voor verdere reacties.

henkvanerp

Gebruiker
Lid geworden
13 jun 2007
Berichten
21
Hallo,

Graag oplossing voor het volgende vraagstuk.
Code:
Dim Path As String
Dim filename As String
    Path = Range("P1")            Ín deze cel staat het path vermeld
    filename = Range("AI4")   'In deze cel staat de 'naam' van het bestand vermeld.

Op basis van Path en filename wordt het bestand opgeslagen. Dat werkt prima.
Maar als nu het weggeschreven bestand is geopend dan wil ik daar een controle op en dat het geopende bestand direct wordt afgesloten.
Graag aanvullend script.

Alvast bedankt.
 
Laatst bewerkt door een moderator:
De code die je plaatst is niet compleet. Dit stukje is alleen de definitie van de variablelen en niet het daadwerkelijk opslaan.
Kun je het volledige stuk ode voor het opslaan plaatsen?

Er zijn altijd meerdere wegen naar Rome..
Het is meestal makkelijker jouw code aan te vullen dan een heel nieuwe te schrijven en hopen dat er geen conflicten zijn
 
Hier de code waarmee ik het bestand opsla. En dat werkt,
Maar als ik de macro opnieuw uitvoer en het bestand is al een keer opgeslagen en is geopend onder dezelfde naam dan loopt de macro vast.


Code:
Dim Path As String
Dim filename As String
Path = Range("P1") Ín deze cel staat het path vermeld
filename = Range("AI4") 'In deze cel staat de 'naam' van het bestand vermeld.
ActiveWorkbook.SaveAs filename:=Path & filename & ".xlsx", FileFormat:=51  'Slaat nieuw bestand op
                                                                                'onder nieuwe naam (
ActiveWorkbook.Close SaveChanges:=True
 
Laatst bewerkt door een moderator:
Maak er eens dit van:
Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Range("P1") & "\" & Range("AI4") & ".xlsx", 51
Application.DisplayAlerts = True
ActiveWorkbook.Close SaveChanges:=True
 
Hallo Edmoor, bedankt. De laatste regel ActiveWorkbook.Close SaveChanges:=True zorgt ervoor dat het bestand waaruit de macro wordt uitgevoerd word opgeslagen. En niet het aangemaakte bestand.
Er wordt een bestand aangemaakt met Path & Filename.
Alvorens het wordt opgeslagen dient gecontroleerd te worden of er al eenzelfde bestand bestaat (zelfde pad en naam) gopend is. Zoja, dient dit eerst te worden gesloten zonder op te slaan.
Nog meer opties?

Maak er eens dit van:
Code:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Range("P1") & "\" & Range("AI4") & ".xlsx", 51
Application.DisplayAlerts = True
ActiveWorkbook.Close SaveChanges:=True
 
Je kan de naam van het aan te maken bestand controleren of het gelijk is aan het huidig geopende bestand met:
Code:
Activeworkbook.FullName
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan