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

Problemen met WorkbookOpen

Status
Niet open voor verdere reacties.

j.starmans

Gebruiker
Lid geworden
10 okt 2006
Berichten
7
Hey mensen,

Ik word helemaal gek hier :shocked:
Op een of andere manier werkt mijn code niet (meer) en ik snap niet waarom.

Ik heb een macro geschreven die perfect werkt als je hem handmatig uitvoert.
Deze heb ik gekoppeld aan een Workbook_Open macro in Excel

Maar om een of andere reden werkt dit niet.

* Macro beveiliging staat Laag.
* Alle code nu neergezet in het ThisWorkbook gedeelte.

"Vroeger" werkte dit als een trein, maar het lijkt of hij de Workbook_Open macro niet eens aanroept. Wanneer ik hier namelijk alleen een msgbox neerzet om te openen, werkt dit ook niet.
Handmatig werkt het wel.

Iemand tips?

Hieronder is de code zichtbaar.

Alvast bedankt!

Code:
Public Sub Workbook_Open()

MaakKnopje

End Sub


'-----------------------------------------------------------------------
'  Module voor fancy sorteren met VBA features (shizzle!)
'-----------------------------------------------------------------------
Public Sub MaakKnopje()
    Dim bar As CommandBar
    Dim button As CommandBarButton
    
    On Error Resume Next
    Set bar = Application.CommandBars.Item("OskoSapBar")
    If Err.Number <> 0 Then Set bar = Application.CommandBars.Add("OskoSapBar", msoBarTop, Temporary:=True)
    On Error GoTo 0
    
    bar.Visible = True
    Set button = bar.Controls.Add(msoControlButton)
    button.Caption = "Sorteer Werkblad"
    button.Style = msoButtonCaption
    button.OnAction = "SortWorkSheet"
End Sub

Public Sub SortWorksheet()
    ' ScreenUpdating uit, anders crasht Excel bij het switchen naar een
    ' sheet met daarop voorwaardelijke formattering op basis van
    ' callbacks naar VBA code.
    Application.ScreenUpdating = False
    
    Sheets("EXTRA").Select
    
    Cells.Select
    Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Key2:=Range("D2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
    Range("A2").Select

    ' Screenupdating weer aan
    Application.ScreenUpdating = True
End Sub
 
Hoi,
Misschien is het probleem dat er in de Workbook_open() alleen maakknopje staat en niet call Maakknopje
Ik heb daarnaast de codes verplaatst. De twee codes heb ik in een aparte module gezet. Volgens mij werkt het, maar ik weet natuurlijk niet wat helemaal de bedoeling is.
Maar dat is misschien te makkelijk. Probeer het eens

Groet,
Allard
 

Bijlagen

Laatst bewerkt:
Hoi,
Misschien is het probleem dat er in de Workbook_open() alleen maakknopje staat en niet call Maakknopje

Maar dat is misschien te makkelijk. Probeer het eens

Groet,
Allard

Hoi allard1,

Bedankt, maar helaas is dit het niet.
Ik ben er eigenlijk vrij zeker van dat dit vroeger wel gewerkt heeft, maar misschien zie ik iets over het hoofd?
 
Hoi allard1,

Bedankt, maar helaas is dit het niet.
Ik ben er eigenlijk vrij zeker van dat dit vroeger wel gewerkt heeft, maar misschien zie ik iets over het hoofd?

Ik heb mijn reactie aangepast. Kijk er nog eens naar.
 
Nu snap ik er helemaal niets meer van. Jouw code werkt wel, mijn code werkte niet.
Letterlijk hetzelfde, werkt het nog niet.
Alles van mij weggegooid, jouw tekst geplakt in dezelfde opmaak en op dezelfde plaats --> werkt het wel!

Of ik heb/had ergens een typfout.. of Excel moet mij gewoon niet meer :D

In ieder geval erg bedankt! :thumb:
 
Nu snap ik er helemaal niets meer van. Jouw code werkt wel, mijn code werkte niet.
Letterlijk hetzelfde, werkt het nog niet.
Alles van mij weggegooid, jouw tekst geplakt in dezelfde opmaak en op dezelfde plaats --> werkt het wel!

Of ik heb/had ergens een typfout.. of Excel moet mij gewoon niet meer :D

In ieder geval erg bedankt! :thumb:


Ik ben geen excelvba expert, maar volgens mij heeft het te maken met de plaats van de codes. Maar goed, laten we er niet te diep in duiken het functioneert. Succes
 
Verschil

Mmmm iets te vroeg gejuicht, ik dacht dat hij werkte.. maar de computers hier houden me ook al voor de gek lijkt mij :p

Wat is het verschil tussen het bestand wat werkt (helpmij) en mijn bestand? (materiaallijsten)?

--update--

Denk dat het probleem puur in het bestand zit, niet in de code.
Daarom heb ik er ook last van. Wanneer ik dezelfde code copy/paste in een leeg exceldocument werkt het perfect (zoals ik verwacht had dat het zou moeten werken)
Maar in het document van mij (materiaallijsten) lukt het maar niet.
Denken jullie dit ook of zie ik iets heel doms over het hoofd?
 

Bijlagen

Laatst bewerkt:
j.starmans,

Ik zie in de macro 2x ThisWorkbook staan 1x ThisWorkbook en 1x ThisWorkbook1.
Kan het probleem hier in zitten?

Volgens mij heb je maar 1 WorkBook of zie ik het verkeerd?
 
j.starmans,

Ik zie in de macro 2x ThisWorkbook staan 1x ThisWorkbook en 1x ThisWorkbook1.
Kan het probleem hier in zitten?

Volgens mij heb je maar 1 WorkBook of zie ik het verkeerd?

Mag ik vragen waar je dat ziet? Want ik heb toch maar echt 1 workbook, met daaraan hangend enkele modules die uitgevoerd worden.

Het probleem lijkt zich te zitten in het stukje code in de module mod_validate.
Wanneer ik die code verwijder (of deels verwijder) start de Workbook_open functie netjes en komt mijn werkbalk + knopje netjes in beeld.

Het rare is dat de andere modules pas opstarten nadat ze aangeroepen zijn, en niet bij het opstarten meteen?!
 
Het is wat Hoornvan zegt. Ik snapte de twee workbooks ook niet helemaal, maar als je in beide de "Workbook_open" code plaatst lijkt hij te werken. Onderstaand een voorbeeld
 

Bijlagen

j.starmans,

Hier is een screenfoto.

Allard1, als ik de file van jou opend geeft Exel een onherstelbare fout en komt er een WorkBook bij.
Dit is erg vreemd en wat hier de fout is kan ik niet zeggen.
 

Bijlagen

  • Materiaal.jpg
    Materiaal.jpg
    65,3 KB · Weergaven: 61
Laatst bewerkt:
Mag ik vragen waar je dat ziet? Want ik heb toch maar echt 1 workbook, met daaraan hangend enkele modules die uitgevoerd worden.

Het probleem lijkt zich te zitten in het stukje code in de module mod_validate.
Wanneer ik die code verwijder (of deels verwijder) start de Workbook_open functie netjes en komt mijn werkbalk + knopje netjes in beeld.

Het rare is dat de andere modules pas opstarten nadat ze aangeroepen zijn, en niet bij het opstarten meteen?!

Het is niet zozeer de modules die je aanroept alswel de macro's die erin staan.
Ik heb de code in bijgevoegd bestand aangepast omdat er steeds een knop aan het menu werkt toegevoegd als het bestand werd geopend.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
j.starmans,

Hier is een screenfoto.

Allard1, als ik de file van jou opend geeft Exel een onherstelbare fout en komt er een WorkBook bij.
Dit is erg vreemd en wat hier de fout is kan ik niet zeggen.

Had ik ook.
Toen ik een msgbox had geplaatst en daarna op OK klikte ging het goed.
Zodra ik de msgbox verwijderde, was ook de foutmelding verdwenen. :shocked:
Sindsdien heb ik het niet meer gehad.

Met vriendelijke groet,


Roncancio
 
Dat kan te maken hebben met een andere module die ik op mijn werk gebruik, misschien dat die onverhoopt een code toevoegd (allemaal menuschermen) maar ik dacht dat ik disabled had. Raar. Maar toen ik het bestand van starman voor het eerst opende begon mijn excel ook te flippen en daar kwam ik alleen uit door een code te blokken in het bestand zelf. Erg raar
 
Het is niet zozeer de modules die je aanroept alswel de macro's die erin staan.
Ik heb de code in bijgevoegd bestand aangepast omdat er steeds een knop aan het menu werkt toegevoegd als het bestand werd geopend.

Met vriendelijke groet,


Roncancio


En het wordt alleen maar vager :P
Jouw bestand werkt idd! Ik kan het 1000x openen en het knopje komt netjes. Prima!
Echter, nu open ik het voor de 1001e keer, doe helemaal niets, druk op SAVE en afsluiten en vervolgens wanneer ik het weer wil openen.. knopje foetsie en komt nooit meer!

Het lijkt echt iets raars te zijn, want ik zie (Excel 2000) ook geen 2x ThisWorkbook. Enig idee?
 
En het wordt alleen maar vager :P
Jouw bestand werkt idd! Ik kan het 1000x openen en het knopje komt netjes. Prima!
Echter, nu open ik het voor de 1001e keer, doe helemaal niets, druk op SAVE en afsluiten en vervolgens wanneer ik het weer wil openen.. knopje foetsie en komt nooit meer!

Het lijkt echt iets raars te zijn, want ik zie (Excel 2000) ook geen 2x ThisWorkbook. Enig idee?

De code geeft nergens aan de dat knop verwijderd moet worden.
Ik kan het bestand saven en afsluiten en zonder problemen openen.
Wellicht is er iets aan de hand met je Excelapplicatie. Heb je een andere pc geprobeerd?

Met vriendelijke groet,


Roncancio
 
Ik heb het bestand wat opgeschoond.
De aanmaak van een werkbalk met een knop is overbodig: maak gebruik van aanpassen/werkbalken/toevoegen.
Daarmee wordt de werkbalk een onderdeel van het bestand.
De proceduree 'maak knopje' en de start daarvan in 'Workbook open' kan daarmee verdwijnen. (overigens heb ik dat knopje-toevoegen nog wel even gestroomlijnd)
 

Bijlagen

Ik heb het bestand wat opgeschoond.
De aanmaak van een werkbalk met een knop is overbodig: maak gebruik van aanpassen/werkbalken/toevoegen.
Daarmee wordt de werkbalk een onderdeel van het bestand.
De proceduree 'maak knopje' en de start daarvan in 'Workbook open' kan daarmee verdwijnen. (overigens heb ik dat knopje-toevoegen nog wel even gestroomlijnd)

De werkbalk mag best onderdeel worden van het bestand, echter wordt dat bestand elke keer opnieuw aangemaakt geautomatiseerd.. Dus dan zal die handeling daar moeten plaats vinden.

De werkbalk mag ook geen onderdeel worden van excel aangezien hij alleen bij dit bestand zichtbaar mag zijn.

Vandaar dat het via code is gebeurd.
Maar via jouw code wordt die balk keer op keer aangemaakt wat dus zorgt voor 537 knopjes op een gegeven moment.
Daarbij werkt de hele functie niet meer.

Ik denk dat ik weet waar de fout zit, heeft ook te maken met Excel 2000, waar het in 2003 wel goed gaat.
Dus ik ga zelf verder spitten, ik heb nu een work-around maar die kan altijd beter :P

Iig bedankt voor de moeite
 
Hiermee wordt slecht eenmaal een knop gefabriceerd.

Code:
Sub MaakKnopje()
    On Error Resume Next
    Set bar = Application.CommandBars.Item("OskoSapBar")
    If Err.Number > 0 Then Application.CommandBars.Add "OskoSapBar", msoBarTop, True
    With Application.CommandBars.Item("OskoSapBar")
        [COLOR="Teal"][B]if.controls.count=0 then[/B][/COLOR]
          With .Controls.Add(msoControlButton)
              .Caption = "Sorteer Werkblad"
              .Style = msoButtonCaption
              .OnAction = "SortWorkSheet"
          End With
        [B][COLOR="teal"]end if[/COLOR][/B]
        .Visible = True
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan