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

Autonew macro

Status
Niet open voor verdere reacties.

Thoralf

Terugkerende gebruiker
Lid geworden
29 okt 2007
Berichten
1.418
Hallo allemaal,

Een sub autonew() met daarin bijv de opdracht

CELLS( 1, 2) = INPUTBOX("Voer een datum in:","Test invoerbox", date)

Zou in cel b1 de datum moeten zetten op het moment dat het werkblad wordt gecreëerd.

Dit is wat ik heb op gepakt, echter als ik dit in een module in VBA zet of in Thisworkbook en ik sla vervolgens de werkmap op als sjabloon, dan werkt het niet in excel 2003 als ik via nieuw dit sjabloon aanklik om via dit sjabloon een nieuwe werkmap te maken.

Wat doe ik hier niet goed?
 
Probeer deze eens:

Code:
Private Sub Workbook_Open()
Sheets("Blad1").Cells(1, 2) = InputBox("Voer een datum in:", "Test invoerbox", Date)
End Sub

Bladnaam eventueel aanpassen.
 
Hallo Ad,

Deze kende ik. Hij heeft ten opzichte van wat ik begreep van autonew één tekortkoming: de door jouw voorgestelde oplossing wordt actief bij iedere opstart van de werkmap. Autonew zou alleen actief zijn bij de creatie, de eerste opstart van de werkmap. Bij de door jou aangedragen oplossing moet je dus een criterium vinden waarmee je de tweede en volgende opstarts van de werkmap kunt vaststellen om daarmee de werking te onderbreken.
Verder rondkijkend op internet begin ik te vermoeden dat, ondanks wat je hier en daar vindt, autonew eigenlijk alleen in Word geïmplementeerd zou zijn en dan verder ergens in versie 2000 of iets later er uit verdwenen. Ik ben dan ook voor mijn oplossing in de richting van Workbook_open gegaan, met voorlopig een messagebox als breekpunt.
Ik hoop echter dat er nog een duidelijk antwoord komt of deze functie voor excel (nog) bestaat. Hij geeft je een handig hulpmiddel om bij de eerste opstart van een werkmap het een en ander te doen.
In mijn geval zou dat gaan om het, per werkmap éénmalig, ophalen van een aantal gegevens uit een database, waarbij iedere werkmap met een grote regelmaat moet worden aangemaakt en steeds opnieuw dezelfde layout heeft. Een prima voorbeeld dus voor het hanteren van een sjabloon.
In ieder geval veel dank voor het meedenken.
 
Hallo Jaques,

Gezien het voorbeeld, zeker geen slechte gedachte, echter zodra dan B1 leeg wordt gemaakt, terwijl er andere gevuld blijven, heb je een probleem. Ik zou dan eerder kiezen voor een controle op aantal ingevulde rijen cq laatste ingevulde rij.
De regel in het voorbeeld was slechts een regel om de functie autonew op mijn computer te testen. In werkelijkheid zou die regel vervangen worden door, als geprint, meerdere pagina's VBA en SQL-coding.
Ook dank voor het meedenken.
 
Laatst bewerkt:
Thoralf, zoals ik het versta gaat het hier enkel om de datum waarop het bestand gemaakt is. Met onderstaande eigenschap wordt deze datum bij een gewoon bestand opgevraagd. Hoe deze reageert bij een template is aan jou om uit te testen. Misschien dat dit een oplossing biedt.
Code:
Private Sub Workbook_Open()
[B1] = Format(ThisWorkbook.BuiltinDocumentProperties(11), "dd/mm/yyyy")
End Sub

@Thoralf
Heb het zelf al eens getest en lukt niet.:confused: Hij neemt de datum v/h sjabloon over :mad:
 
Laatst bewerkt:
Code:
Private Sub Workbook_Open()
    If [IV1] <> "" Then
        [B1] = [IV1]
    Else
        [IV1].Value = Format(Date, "mm/dd/yyyy")
        [B1] = [IV1]
    End If
End Sub
Waarom dan niet je datumcel in een vergeten hoek v/h werkblad. Bij de eerste kopie maken via Bestand >> Nieuw zal de datumcel gevuld worden en wordt daarna gekopieërd naar B1. Sla de wijzigingen in de kopie op. Bij het heropenen wordt gekeken of de datumcel gevuld is, zoja wordt de aanmaakdatum naar B1 gekopieërd.Je mag B1 dus wissen zoveel je wil, bij het heropenen zal deze steeds terug verschijnen.
 
Hallo Rudi (en anderen),

Door ziekte kon ik niet eerder reageren (nu nog niet geheel genezen), vandaar deze late reactie.
De plaatsing van een datum was slechts een mogelijke actie die ik als actie had opgenomen om de werking van autonew te testen. Het had evenzeer een geheel andere actie kunnen zijn.

Ik ben verder aan het zoeken gegaan en kom voorlopig tot het volgende:
  1. Autonew is een standaardfunctie van Word en zit niet in Excel.
  2. Autonew werkt (alleen dus in Word) als een document wordt gecreëerd. Toepassing dus in een sjabloon.
  3. Voor Excel bestaat ook zoiets: het event NewWorkbook. Zie http://msdn.microsoft.com/en-us/library/aa220923(office.11).aspx
Ik heb een en ander nog niet getest, maar verwacht, gezien de beschrijving, dat dit voldoet.

Daarnaast ben ik in mijn zoektocht nog twee andere pagina's tegen gekomen die mogelijk interessant zijn:
- Een pagina van Chip Pearson (wie anders!!) over onder andere het "on the fly" aanpassen van de VBA met behulp van VBA: http://www.cpearson.com/excel/vbe.aspx
- Een pagina met een voorbeeld bestandje RunOnceOnly: http://www.vbaexpress.com/kb/getarticle.php?kb_id=511
Dit laatste heeft bij mij nog niet naar behoren gewerkt, maar is voor mij, gezien het event NewWorkbook, ook duidelijk minder interessant geworden.

Nogmaals: iedereen die heeft meegedacht: dank daarvoor en voor alle andere meelezers, en dat waren er zo te zien reeds velen, ik hoop dat jullie met de hier gegeven aanwijzingen ook verder kunnen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan