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

Macro probleem

Status
Niet open voor verdere reacties.

CorS1964

Gebruiker
Lid geworden
18 mrt 2020
Berichten
8
Hallo, Ik heb een probleem met een macro. Ik wil van een document (werkvergunningformulier) het nummer ophogen met 1 en daarna opslaan op een locatie waarna het gemaakte document (met opgehoogde nummer) opend en gewijzigd/ingevuld kan worden. Een volgende keer dat op het (master)document geklikt wordt moet dit weer herhaald worden.

Het eerste stukje werkt (nummer ophogen), maar het 2e stuk (opslaan en openen voor wijzigingen) niet naar wens.

Het nieuwe document wordt wel opgeslagen op de opgegeven locatie, maar het master document opent met een 1 erachter en dit moet dan opgeslagen worden. Daarnaast wordt alleen de eerste sheet opgeslagen en ik wil alle sheets opslaan omdat er keuzelijsten in de eerste sheet zitten waarvan de gegevens op de andere sheets staan.

File als xlsm toegevoegd. ik gebruik het als xltm als master document.

Weet iemand een oplossing voor mijn probleem.

Bij voorbaat dank voor de hulp.
 

Bijlagen

  • Werkvergunning TEST Sjabloon1.xlsm
    448,3 KB · Weergaven: 19
Ik denk dat je met ThisWorkbook.SaveAs al een eind komt
 
Inderdaad, dit lost het probleem op.

Nu zie ik alleen dat mijn sjabloon niet met het opgehoogde nummer wordt opgeslagen.
Als ik dan een nieuw formulier wil activeren komt het lagere (bestaande nummer) in beeld.
 
Je kan het onder een knop hangen. Met dat je er op drukt doe je zeg maar SaveAs met als naam: huidige naam + 1 bvb
 
Beste JVeer, het gaat niet om de bestandsnaam want dat werkt prima.

Het gaat om het nummer dat in het document in een cel staat. Het nummer in deze cel (in de sjabloon) is bijvoorbeeld 4 en wordt nu verhoogt naar 5.
Het document wordt opgeslagen met nummer 5, maar in het slabloon blijft 4 staan.
Bij het weer aanklikken van de sjabloon wordt dan opnieuw een document met nummer 5 aangemaakt en dat is niet de bedoeling.
De macro ziet er nu als volgt uit:

Sub Auto_open()
Dim Ws As Worksheet
Set Ws = ActiveSheet
Sheets("Werkvergunning").Select
Dim ww As String
ww = "Wachtwoord"
Sheets("Werkvergunning").Unprotect Password:=ww
[AQ1] = [AQ1] + 1
Range("AM9").Value = Date
Sheets("Werkvergunning").Protect Password:=ww
Dim NieuwWv As Variant
'kopiëren document als nieuwe factuur
ActiveSheet.Copy
NieuwWv = "C:\Users\crslg\Desktop\Werkvergunningen" & Range("AQ1").Value & ".xlsx"
Application.DisplayAlerts = False
ThisWorkbook.SaveAs NieuwWv, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End Sub
 
Je kan het aantal bestanden (facturen) tellen die in de map staan.

Maak eerst een map aan op je desktop met de naam "Werkvergunningen" en stop daar alle bestanden in.

Code:
Sheets("werkvergunning").Range("aq1") = Format(CreateObject("scripting.filesystemobject") _
        .getfolder("[COLOR=#3E3E3E]C:\Users\crslg\Desktop\[/COLOR][COLOR=#ff0000]Werkvergunningen[/COLOR][COLOR=#3E3E3E]\"[/COLOR]).Files.Count, "000000000") + 1
 
Ik zie het niet....

Ik heb een document (slabloon) met de naam Formulier werkvergunning.xltm
Dit is de sjabloon die in de map (C:\Users\crslg\Desktop\Werkvergunningen) staat waar de vergunningen opgeslagen moeten worden.
Wanneer ik nu het sjabloon aanklik wordt er een nieuw document gemaakt en opgeslagen met een opvolgend nummer, dus b.v. van 15 naar 16, maar het nummer in de sjabloon blijft 15.
Daar zit mijn probleem. Ik wil dat de sjabloon opgeslagen wordt met het volgende nummer, dus 16 in het voorbeeld.

Hoe doe ik dat in deze macro?

Sub Auto_open()
Dim Ws As Worksheet
Set Ws = ActiveSheet
Sheets("Werkvergunning").Select
Dim ww As String
ww = "Wachtwoord"
Sheets("Werkvergunning").Unprotect Password:=ww
[AQ1] = [AQ1] + 1
Range("AM9").Value = Date
Sheets("Werkvergunning").Protect Password:=ww
Dim NieuwWv As Variant
'kopiëren document als nieuwe vergunning
ActiveSheet.Copy
NieuwWv = "C:\Users\crslg\Desktop\Werkvergunningen" & Range("AQ1").Value & ".xlsx"
Application.DisplayAlerts = False
ThisWorkbook.SaveAs NieuwWv, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End Sub
 
Wat ik niet begrijp.
Je opent je .xltm en maakt gelijk een copy van tabblad werkvergunning en slaat het op en sluit het daarna direct.

Maar goed, hier het stukje wat jij niet ziet..
Code:
Sub Auto_open()
Dim NieuwWv As string, ww As String
NieuwWv = "C:\Users\crslg\Desktop\Werkvergunningen\"
ww = "Wachtwoord"
with Sheets("Werkvergunning")
 .Unprotect Password:=ww
 .Range("aq1") = Format(CreateObject("scripting.filesystemobject").getfolder(NieuwWv).Files.Count, "000000000") + 1
 .Range("AM9").Value = Date
 .Protect Password:=ww
 .Copy
end with
activeWorkbook.SaveAs NieuwWv & "werkvergunningen " & range("aq1").value & ".xlsx" , 51
ActiveWorkbook.Close
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan