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

Bestandsnaam veranderen bij openen

Status
Niet open voor verdere reacties.

DeToekomst2

Gebruiker
Lid geworden
29 jul 2016
Berichten
91
Goedemiddag,


Ik heb de vraag of er een VBA-code bestaat waarmee ik mijn Excel bestand op een speciale manier kan beveiligen. Ik wil namelijk dat bij het openen de naam van het bestand wordt veranderd. Dat je bijvoorbeeld een popup krijgt met de vraag 'Geef projectnummer en naam op'. Dan wordt deze vervolgens in de naam verwerkt. De bestandsnaam zou er dan als volgt uit moeten zien

'Projectnummer - naam'.

Dit betekent dat de volledige oude naam overschreven moet worden.

Kan dit? En zo ja hoe?

Op deze manier voorkom ik dat mijn oude bestand wordt overschreven en wordt ook de naam automatisch aangemaakt.


Alvast bedankt! (Voorbeeldbestandje lijkt me overbodig aangezien het niet met de inhoud te maken heeft :) )_
 
zie bijlage
 

Bijlagen

  • Sla op met nieuwe naam.xlsm
    14,6 KB · Weergaven: 50
Super! Dit is precies wat ik bedoel!


Nu bedoelde ik met naam de projectnaam en niet de bestandsnaam, hoe kan die worden toegevoegd in het pop-up venster? De gehele bestandsnaam moet worden overschreven bij het openen met projectnummer-projectnaam.

En daarnaast nog een vraag. Kan deze code eenmalig worden uitgevoerd. Dus nadat de bestandsnaam een keer is gewijzigd dat deze niet meer gewijzigd hoeft te worden. Deze code zal namelijk elke keer als je het bestand opent geactiveerd worden...


In ieder geval bedankt voor deze code, werkt goed!
 
Kan deze code eenmalig worden uitgevoerd. Dus nadat de bestandsnaam een keer is gewijzigd dat deze niet meer gewijzigd hoeft te worden. Deze code zal namelijk elke keer als je het bestand opent geactiveerd worden...
Dat klopt niet, want het bestand wordt opgeslagen zonder macro's.

In deze bijlage moet ook de naam opgegeven worden....
 

Bijlagen

  • Sla op met nieuwe naam 2.xlsm
    14,6 KB · Weergaven: 36
Kijk aan, bestand maken is helemaal top!


Eén probleem, ik wil graag dat macro's actief blijven in mijn bestand... Mijn bestand bevat namelijk macro's. Is er geen manier dat deze code om de naam te veranderen zichzelf verwijdert nadat die geactiveerd is? Of zichzelf op een andere manier uitschakeld?
 
Dit bedoel je?
Code:
Private Sub Workbook_Open()
sq = Array(InputBox("Geef het projectnummer op", "Projectnummer"), InputBox("Wat is de projectnaam?", "Projectnaam"))
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & sq(0) & "-" & sq(1), 52
    With ThisWorkbook.VBProject.VBComponents(1).CodeModule
     .DeleteLines .ProcStartLine("Workbook_Open", 0), .ProcCountlines("Workbook_Open", 0)
   End With
End Sub
 
Beste HSV,


De code geeft bij mij een foutmelding bij het volgende:

Code:
With ThisWorkbook.VBProject.VBComponents(1).CodeModule
     .DeleteLines .ProcStartLine("Workbook_Open", 0), .ProcCountlines("Workbook_Open", 0)

De bestandsnaam wordt naar wens veranderd maar de code wordt niet verwijderd. Komt dit omdat de code zichzelf moet verwijderen en dat weigert? Dan zou het (waarschuwing, ik ben een geen kenner) naar mijn mening een idee zijn om een andere macro aan te maken die deze regels verwijdert. Dan kun je CALL.... doen. Klopt dit?

In ieder geval bedankt!

gr.
 
Geen idee, hier werkt het prima in Excel 2007.
Ik zal vanavond als ik thuis ben eens kijken als je je versie even vermeld.
 
Welke van de twee lijnen wordt geel gemarkeerd.
Ik heb nl. geen Excel 2010 en moet derhalve zoeken.

edit:
misschien wil iemand anders dit eens testen.
 
Laatst bewerkt:
@HSV

ik heb het geprobeerd in 2010, maar krijg geen melding. Ook wordt de macro niet verwijderd.

@ allen
Door de code iets te wijzigen in:
Code:
Private Sub Workbook_Open()
If Sheets(1).Range("A1") = "kopie" Then Exit Sub
sq = Array(InputBox("Geef het projectnummer op", "Projectnummer"), InputBox("Wat is de projectnaam?", "Projectnaam"))
Sheets(1).Range("A1") = "kopie"
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & sq(0) & "-" & sq(1), 52
End Sub

werkt het m.i. wel

zie bijlage


Edit @HSV: het werkt wel, maar het nieuwe bestand moet eerst nog een keer opgeslagen worden (zie gemarkeerde regel), dus bv zo werkt het
Code:
Private Sub Workbook_Open()
sq = Array(InputBox("Geef het projectnummer op", "Projectnummer"), InputBox("Wat is de projectnaam?", "Projectnaam"))
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & sq(0) & "-" & sq(1), 52
    With ThisWorkbook.VBProject.VBComponents(1).CodeModule
     .DeleteLines .ProcStartLine("Workbook_Open", 0), .ProcCountlines("Workbook_Open", 0)
   End With
[COLOR="#B22222"]ThisWorkbook.Save[/COLOR]
End Sub
 

Bijlagen

  • Sla op met nieuwe naam 3.xlsm
    15 KB · Weergaven: 32
Laatst bewerkt:
Harstikke bedankt HSV en Haije! Het werkt zoals ik wil :)

Ik zal de vraag op opgelost zetten.
 
Volgens mij heb je nu op een ingewikkelde manier 'uit laten vinden' wat Excel al ingebouwd heeft met het gebruik van een template (sjabloon).

Om 'jouw' aanpak te laten werken moeten gebruikers in het beveiligingscentrum hun Excel kwetsbaarder maken dan nodig is.
 
Edit @HSV: het werkt wel, maar het nieuwe bestand moet eerst nog een keer opgeslagen worden (zie gemarkeerde regel), dus bv zo werkt het

Lijkt me achteraf vrij logisch, Excel vraagt mij of ik het bestand wil opslaan als ik het wil sluiten.
Het was inderdaad handiger om dit in de code af te handelen. :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan