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

automatisch nummeren en opslaan

Status
Niet open voor verdere reacties.

beertje

Gebruiker
Lid geworden
14 dec 2000
Berichten
500
Hoi,

Ik heb een sjabloon gemaakt, en nu wil ik dat hij in een cel elke keer als ik hem open er een uniek opvolgnummer komt te staan.
en als ik heb afsluit automatisch onder dit nummer opslaat.

Is dit mogelijk?

Alvast bedankt


Beertje
 
hoi,

Ik heb het volgende in "ThisWorkBook" geplakt
---------------------------------------------------------------------------------------------------------------------------------
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ReadOnly Then
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & [Blad1].[F1] & ".xls"
End If
End Sub

Private Sub Workbook_Open()
If Not ThisWorkbook.ReadOnly Then
Worksheets("Blad1").Activate
Range("F1").Value = Range("F1").Value + 1
End If
End Sub
--------------------------------------------------------------------------------------------------------------------------------
Maar het werkt niet helemaal.
Hij telt niet op.
en omdat het hier om een sjabloon gaat vraagt hij nog steeds om "opslaan als.."

De A1 heb ik veranderd in F1 maar dat mag geen probleem zijn lijkt mee.
Wat ik rood heb gemaakt, daar geeft hij een foutmelding op.

Doe ik iets verkeerd??

ik wil hem ook graag ergens anders opslaan, wat moet ik veranderen in de script?
Ik hoor het graag.

Beertje
 
Laatst bewerkt:
Verander

ActiveWorkbook

eens door

ThisWorkbook

en zie of het dan werkt.

Dat heb ik trouwens al voorgesteld. Als je geen 2 verschillende threads opent, had je dat geweten.

Wigi
 
Beertje,

ik heb er nu ook een sjabloon (.xlt) van gemaakt.

Alleen als de sjabloon in de officiele sjabloonmap zit werkt het niet omdat ik het pad van de sjabloon niet kan overnemen in een string. En dan wordt direct na het openen van de sjabloon het pad "Mijn Documenten" met als gevolg dat de sjabloon altijd weer bij 0
begint te tellen.

Het werkt wel als je de sjabloon gewoon in de Mijn Documenten zet.

Ik probeer er nog wel iets op te vinden (of misschien een andere Helpmij-er)
zodat de sjabloon in de officiele sjabloonmap kan.

Koosl
 

Bijlagen

Hoi Wigi,

Ja klopt, ik kwam pas later achter dat dit al een keer ter spraken is geweest.
Sorry hiervoor.
Maar het werkt niet !!
elke keer als ik de sjabloon open kom ik weer op hetzelfde nummer terecht.
De eerste keer maakt hij inderdaad een 1.xls aan, open ik nu de 1.xls dan gaat hij doornummeren.
maar dat is nu niet de bedoeling, ik wil dat hij doornummerd op mijn sjabloon.


Beertje
 
Beertje,

als je de laatste bijlage pakt en de sjabloon dan in Mijn Documenten zet dan werkt hij wel.

Koosl:
Alleen als de sjabloon in de officiele sjabloonmap zit werkt het niet omdat ik het pad van de sjabloon niet kan overnemen in een string. En dan wordt direct na het openen van de sjabloon het pad "Mijn Documenten" met als gevolg dat de sjabloon altijd weer bij 0
begint te tellen
Ik probeer er nog wel iets op te vinden (of misschien een andere Helpmij-er)
zodat de sjabloon wel in de officiele sjabloonmap kan

Probeer het maar eens.Bij mij werkt het wel.

Koosl
 
precies gedaan wat je zei, maar werkt niet.
heb de inhoud van jou "Thisworkbook" gekopieerd in de mijne.
En heb vervolgens het bestand in "mijn documenten" gezet, maar het werkt niet!!

nog enig idee??


Alvast bedankt

Beertje
 
Beertje,

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ReadOnly Then
    ThisWorkbook.SaveAs Filename:="C:\\" & [Blad1].[[COLOR="Red"]A1[/COLOR]] & ".xls"
End If
End Sub

Private Sub Workbook_Open()
Worksheets("Blad1").Activate    
Range("[COLOR="Red"]A1[/COLOR]").Value = Range("[COLOR="red"]A1[/COLOR]").Value + 1
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "[B][COLOR="Red"]Tijdens openen A1 ophogen.xlt[/COLOR][/B]", FileFormat:=xlTemplate
Application.DisplayAlerts = True
End Sub

Heb je de code wel aangepast naar jouw sjabloon?

Koosl
 
Hoi Koosl

Nou ik snap er echt niet meer van.
Dit staat er in mijn ThisWorkBook:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ReadOnly Then
ThisWorkbook.SaveAs Filename:="C:\testexcel\" & [Blad1].[F1] & ".xls"
End If
End Sub

Private Sub Workbook_Open()
Worksheets("Blad1").Activate
Range("F1").Value = Range("F1").Value + 1
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "TESTWERK.xlt", FileFormat:=xlTemplate
Application.DisplayAlerts = True
End Sub

het optellen doet hij nu wel goed, maar als ik een xlt ingevult heb en ik doe hem opslaan
dan maakt hij een kopie met het nummer wat op F1 staat (wat goed is), en hij slaat de xlt op met alles erin !!!!!(wat eigenlijk niet mag met een sjabloon)


Groetjes Beertje
 
Beertje,

Als je begint en in de sjabloon de code zet moet je in F1 een 0 zetten. De sjabloon sla je vervolgens handmatig op in "Mijn Documenten" met de naam die je in de code ook gebruikt. De sjabloon natuurlijk wel opslaan als type sjabloon.
Als je de sjabloon nu afsluit met het kruisje rechtsboven, slaat de code uit "Private Sub Workbook_BeforeClose" die nu dus gestart wordt het .xls bestand op met als naam o.xls

Als je nu de sjabloon weer opent komt er door de code uit "Private Sub Workbook_Open" er in F1 een 1 en ook wordt de sjabloon opgeslagen nog voordat jij iets gewijzigd hebt.

Als je vanalles gaat typen en je wilt er weer mee stoppen, klik je op het kruisje rexhtsboven, het bestand wordt gesaved met de nieuwe naam 1.xls.

Je sjabloon kan dus niet gewijzigd zijn (behalve dan het nummer in F1), omdat dit allang is gesaved tijdens het openen.

Misschien is het gemakkelijk om van de sjabloon een snelkoppeling te maken op je bureaublad.

Koosl
 
KoosI

zoals jij het zo beschrijft werkt hij goed.
Maar als ik op het mapje klik van opslaan dan mag hij toch niet de sjabloon opslaan.
Dan moet ik op zijn minst "opslaan als.." te zien krijgen.
Dat is toch de bedoeling van een sjabloon.
snap je wat ik bedoel??
want ik wil graag het zo hebben als ik op het mapje "opslaan" bovenaan klik, dat hij dan hetzelfde doet als dat ik op het kruisje klik.

verder heb ik nog een vraagje...(lastig ben ik he?)
als hij dat bestandje heeft opgeslagen (bv 0.xls) en ik open dat bestand om te kijken, dan telt hij ook gewoon door en slaat het op, en dat is nu net niet de bedoeling.
Heb jij toevallig hier een oplossing voor??

Alvast bedankt...


Beertje
 
Beertje,

natuurlijk kun je zoveel vragen als je wilt. Daar is een forum voor.

Ik ben er bijna, alleen om je laatste vraag te tackelen heb ik een cel nodig die in de sjabloon leeg is en die dus in 0.xls ( en alle andere) altijd gevuld is met een waarde.



Dan kan ik de code hier op laten testen of het de sjabloon betreft of juist niet.



Koosl
 
Hoi Koosl,

Ik lees dat je nog er mee bezig bent, tof...
Je zegt dat je een lege cel nodig hebt, wat mijn betreft kan je F2 hiervoor gebruiken.
volgens mijn is het dan wel mogelijk om die cel verborgen te houden, zodat je niet kunt zien wat erin staat, maar wel wordt gebruikt.


Groetjes Beertje
 
Beertje,

het moet een cel zijn die in je sjabloon leeg is en die in je .xls altijd gevuld moet zijn.

Kun je die cel doorgeven?

Koosl.
 
Vast een ongewenste opmerking....
maar dit soort functionaliteit en wat jij aan het opslaan bent is typisch iets voor een database en niet Excel.

Heb je je daar weleens in verdiept?
 
Beertje,


Zet deze code in "This Workbook" van de sjabloon TESTWERK.XLT
Zet de sjabloon gewoon in de officiele sjabloonmap. Bij mij is dat
c:\Documents and Settings\Koos\Application Data\Microsoft\Sjablonen

Maar als het goed is komt hij daar vanzelf in te staan.
Zorg er voor dat B3 altijd gevuld wordt. (dit is natuurlijk te veranderen). Als je daarna 0.xls start, telt hij er niet automatisch 1 bij.

Code:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ReadOnly Then
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:="C:\testexcel\\" & [Blad1].[F1] & ".xls"
    Application.DisplayAlerts = True
End If
End Sub

Private Sub Workbook_Open()
Dim sjabloonpad As String
Worksheets("Blad1").Activate
If Range("[COLOR="Red"]B3[/COLOR]").Value = "" Then      ' deze cel moet in de sjabloon leeg zijn
     ' maar in de .xls moet deze gevuld worden
    sjabloonpad = Application.TemplatesPath
    Range("F1").Value = Range("F1").Value + 1
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs sjabloonpad & "TESTWERK", FileFormat:=xlTemplate
    ThisWorkbook.SaveAs Filename:="C:\testexcel\\" & [Blad1].[F1] & ".xls"
    Application.DisplayAlerts = True
End If
End Sub

Bij mij werkt hij goed.

Koosl
 

Bijlagen

Laatst bewerkt:
helaas,

Hij telt gewoon door op het *.xls bestand.

Ook dat bestandje van jou.

Het is raar maar waar.......
 
Beertje,

Ik ben er zeker van dat het moet werken.
Hier zijn enkele belangrijke punten waarop het fout zou kunnen gaan:


  1. De sjabloon heet Testwerk en zit in de officiele sjabloonmap.

  2. Als je de sjabloon start moet er in cel B3 moet door jou iets ingevuld worden. Als hier wel iets is ingevuld wordt er namelijk niets bijgeteld door de macro, als je later 0.xls zou openen.

  3. De map c:\testexcel moet bestaan want daar wordt je 0.xls bestand in opgeslagen.

  4. Als je 0.xls zelf opent mag er in F1 niets bijgeteld worden. Als dit wel is dan staat er niets in B3!

  5. Probeer anders eerst eens het laatste .zip voorbeeld uit totdat je het aan de gang hebt gekregen, en plaats het dan pas in je eigen sjabloon.

succes

Koosl.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan