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

Ad hoc Excel macro's, personal.xlsb en beheer van macro's

Status
Niet open voor verdere reacties.

hmwul

Gebruiker
Lid geworden
15 dec 2012
Berichten
430
Over het toepassen van macro's en het beheer in personal.xlsb

Het is zo: ik heb een personal.xlsb file in Excel\Start staan.

Wanneer in dit forum een macro oplossing wordt geboden, ga ik als volgt te werk.
(Mogelijk! Veel te omslachtig, maar ik wéét niet beter...)

- Start Excel
- View > Unhide - Personal.xlsb wordt getoond, klik OK
- Developer > Visual Basic
- Insert, paste de code
- Save
- File Exit
- Hide
- Close Excel - click op save om personal.xlsb op te slaan

Start Excel en test de macro



Voor iedere wijziging in de macro, of eventuele andere VBA-oplossingen:

Eerst Excel afsluiten, geopende bestanden opslaan, dan de bovenstaande stappen.
Dat gaat prima en misschien kan het niet anders, in ieder geval, ik weet niet beter.

Het personal.xlsb bestand is voor mij belangrijk, dus backups op de diverse plaatsen.

Vraag: is een macro laten we zeggen ook 'ad hoc' uit te voeren, lees: zonder dat ik iedere keer personal.xlsb moet aanpassen?

Punt daarbij is het volgende

Wanneer ik Excel start (zonder personal.xlsb te openen), dan Developer > Visual Basic > Insert > de code daarin plakt, krijg ik een melding

"
The following features cannot be saved in macro-free workbooks:
• VB project
To save a file with these features, click No, and then choose a macro-enabled file type in the File Type list.
To continue saving as a macro-free workbook, click Yes.
"

Geen idee wat ik hiermee aan moet, dus close > exit.

Punt 2
Beheer van macro's in personal.xlsb

Wanneer ik dit bestand open en ik klap het onderdeel modules uit, dan staat daar een hele trits van modules.
Allemaal met de naam 'Module'.

Wanneer ik ze stuk voor stuk dubbelklik, dan blijken vele gewoon leeg te zijn.

Vragen:
1. Is er een manier om te zien welke leeg zijn? (zonder dus iedere module te openen)
2. Kan ik die lege modules verwijderen?
3. In het verleden heb ik getracht de naam van de modules te wijzigen, naar de naam van de macro
(b.v. Module123 > InsertEmptyRows, ik verzin maar wat)

Helaas, toen werkte personal.xlsb niet meer, kreeg foutmeldingen, etc.

Backup terug gezet, opgelost.

Kennelijk werkte 'renamen' niet.

Echter, er is 1 module die wél een naam heeft. Die start met 'Public Function'... misschien dat het daarmee te maken heeft?

Enfin, tips zie ik uiteraard graag tegemoet.

Dank bij voorbaat!
 

Bijlagen

  • Macros-Non personal-xlsb-30112021.png
    Macros-Non personal-xlsb-30112021.png
    57,9 KB · Weergaven: 19
  • Excel-Personal-xlsb-modules-30112021.png
    Excel-Personal-xlsb-modules-30112021.png
    45,3 KB · Weergaven: 19
Je werkwijze is inderdaad erg omslachtig, en kan een stuk handiger. Alleen stap 1: start Excel blijft eigenlijk staan :). Als je macro's eenmaal hebt opgeslagen in je Personal.xlsb hebt opgeslagen, kun je daar altijd naar toe, zonder dat je dat bestand zichtbaar hoeft te maken. Kwestie van op <Alt>+<F11> drukken, of in de werkbalk Ontwikkelaars (moet je wel een keer aan hebben gezet) op de knop Visual Basic klikken. Wijzigingen kun je vanuit het VBA venster dan opslaan, of bij het afsluiten van Excel. Als je daar de verkeerde optie pakt (Nee i.p.v. Ja bij Bewaren?) dan ben je uiteraard wél de sjaak. Ik sla de wijzigingen in de Personal.xlsb dus regelmatig op als ik een macro aan heb gepast.

De 'Ad hoc' vraag is een zeer logisch gevolg van hoe je werkt: als je een nieuw bestand maakt, is dat standaard een XLS bestand. Daarin kun je geen macro's opslaan. Dus krijg je die waarschuwing. Je zult, bij het opslaan, dan eersthet bestandstype moeten omzetten van xlsx naar xlsm als je de macro tenminste in het bestand wilt bewaren.

Wat betreft lege modules: natuurlijk kan je die verwijderen. Zou ik ook zeker doen, want je hebt er niks aan. Wijzigen van de modulenaam doe je het makkelijkst in de Eigenschappen (druk op <F4>) van de module. Al kun je daar een macro voor maken, maar waarom zou je?
Kortom: het kan allemaal een stuk eenvoudiger :).
 
Hartelijk dank voor de uitgebreide reactie! Ik waardeer het zeer.
Inderdaad was ik in het verleden regelmatig 'de sjaak', simpelweg omdat ik niet 100% zeker was hoe ermee moest omgaan (personal.xlsb).
Harde les, dus heb ik de nodige backups.

Ik heb gedaan wat je zei : lege (en oude) modules verwijderd, toen de modules hernoemd (F4).

Ad hoc: Uitgeprobeerd, blanco bestand, data erin geplakt, toen developer, vba, insert, script geplakt (uit mijn vorige thread). Macro uitgevoerd, perfect.
Je kunt dan besluiten om het al dan niet toe te voeten aan personal.xlsb of bestand opslaan als .xlsm of eventueel het resultaat te copy pasten naar een ander bestand.

Weer wat geleerd.
Dank nogmaals!
 
Enfin, toen werkte helaas een toetscombinatie niet meer. Eentje die ik heeull vaak gebruik. Copy-Paste as values, bewaard als ctrl-g.
Iets van Run-time error '1004': PasteSpedal method of Range dass failed.
De vorige .xlsb maar teruggezet.
Het zoeken naar een oplossing kost teveel tijd. Ik laat het maar even voor wat het is.
Ik schrijf dit zónder kwade bedoelingen, ik bedoel het is absoluut niet lelijk bedoeld hoor.
Begrijp me niet verkeerd.

Zal er in de toekomst nog wel eens naar kijken.
 
Ik schrijf dit zónder kwade bedoelingen, ik bedoel het is absoluut niet lelijk bedoeld hoor.
Ik snap niet helemaal wat je hier mee bedoelt, maar ik vermoed dat je door het verplaatsen/hernoemen van macro's nu een niet-werkende sneltoets hebt die een Macro moet triggeren? Plakken als waarden kun je gewoon met de rechtermuisknop doen, en dan uit het snelmenuutje de juiste knop (Waarden) pakken. Lijkt mij een stuk sneller dan je muis loslaten, de sneltoets indrukken en dan je muis weer opzoeken. Om maar eens wat te noemen. De snelheidswinst van zo'n sneltoets lijkt mij verwaarloosbaar. Maar om je probleem op te lossen: waarschijnlijk is het een kwestie van de sneltoets opnieuw aan de macro koppen, en dan doet-ie het weer. Lijkt mij dat je met het terugzetten van de oude xlsb een stuk verder van huis bent :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan