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

script worksheet aanpassen

Status
Niet open voor verdere reacties.

vaneijk

Gebruiker
Lid geworden
31 mrt 2017
Berichten
152
Beste helpers van het Forum,

Wij hebben diverse Excel bestanden met allemaal dezelfde opmaak en diverse scripts. Ik weet dat er mogelijkheden zijn om een userform te importeren/exporteren en ook met modules. Hier ben ik druk mee bezig om dit samen te stellen en met de userforms en modules lukt dit me aardig. Moment dat ik een module vernieuw zet ik een "update" klaar en word de module of het userform verwijderd en opnieuw geïmporteerd.
Nu zoek ik een VBA mogelijkheid om het script van het worksheet aan te passen, hier kom ik niet helemaal uit. Is hier een mogelijkheid toe zonder het sheet te verwijderen en dat dus alleen het script wordt veranderd? Op het sheet staan namelijk "leidende" gegevens waar de rest van de modules en de userforms op werken, ik ben bang deze kwijt te raken of niet naar het orgineel te herstellen.
Maar als ik in mijn ontwikkelaars bestand een aanpassing maak in b.v. het Workbook_open, ik deze op en manier kan aangeven en dat deze in het willekeurige Excel bestand het oude Workbook_open dus vernieuwd wordt naar de nieuwe.


Mvg,
 
Zonder enige vorm van duidelijkheid wegens het ontbreken van een voorbeeld zeg ik dat je beter gebruik kan maken van een invoegtoepassing.
 
Goedemorgen Edmoor,

Een voorbeeldbestand maken is even moeilijk, dan moet ik heel veel gaan verwijderen en gaan aanpassen. Ik hoop het beter te kunnen uitleggen met een paar verkorte voorbeelden qua scripts die ik hiervoor gebruik.

Ik heb een userform gemaakt die eigenlijk ik alle userforms en modules laat inladen welke in mijn ontwikkelaarsbestand staat, dit bestand is geheel gelijk met alle overige bestanden. Als ik ik mijn ontwikkelaarsbestand aanpassingen maak ik een userform of module laat ik deze exporteren d.m.v. onderstaande (ingekorte) script
Code:
Sub export_Selected(Selected_File)
FolderWithVBAProjectFiles = "Z:\VanEijk\Databases\Modules\OffFile\"
ExportFileName = Selected_File

    If FolderWithVBAProjectFiles = "Error" Then
        MsgBox "Export Folder not exist"
        Exit Sub
    End If
    
    On Error Resume Next
        Kill FolderWithVBAProjectFiles & "\*.*"
    On Error GoTo 0


    For Each cmpComponent In wkbSource.VBProject.VBComponents
        
        bExport = True
        szFileName = cmpComponent.Name

        Select Case cmpComponent.Type
            Case 1 '' = 1 = Module
                szFileName = szFileName & ".bas"
            Case 3 '' = 3 = UserForm
                szFileName = szFileName & ".frm"
            Case 2 '' = 2 = KlasseModule
                szFileName = szFileName & ".cls"
                bExport = False
            Case 100 '' = 100 = Sheet of workbook object
                ''' This is a worksheet or workbook object.
                ''' Don't try to export.
                bExport = False
        End Select
        
        If bExport Then
            ''' Export the component to a text file.
            cmpComponent.Export szExportPath & szFileName
        ''' remove it from the project if you want
        '''wkbSource.VBProject.VBComponents.Remove cmpComponent
        End If
    Next cmpComponent
Set wkbSource = Nothing
    MsgBox "Geselecteerde bestanden exporteren is gereed."
End Sub

Daarna loopt er een script om in een database te laten aangeven dat er een nieuwe update voor alle overige bestanden is.
Moment dat 1 van die bestanden wordt geopend controleert die de database of er een update is en indien die er is laat ik die vernieuwen door onderstaande code, in dit voorbeeld voor een module te vernieuwen

Code:
Sub Renew_Modules(Module_Name)
On Error GoTo ErrHandler_Module:
Dim ModulePath As String
ModulePath = "Z:\VanEijk\Databases\Modules\OffFile\" & Module_Name
'' Vernieuwen van modules
wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents.Item(Module_Name)
wb.VBProject.VBComponents.Import FileName:=ModulePath

Exit Sub
ErrHandler_Module:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure verwijderen en vernieuwen van modules."
End Sub

Nu heb ik in deze excel bestanden diverse tabbladen, hierop heb ik simpel gezegd de leidende data staan voor importen en controleren van gegevens met de Acces-databases. Deze tabbladen mogen dus niet verwijderd worden en de data moet bewaard blijven. Het probleem is dat ik in het VBA-menu, onder de Microsoft Excel -objecten dus op het tabblad een script heb staan waar ik ook aanpassing in moet gaan maken of op het object "ThisWorkBook".
Nu wil ik deze scripts op de tabbladen of ThisWorkBook ook gaan vernieuwen zoals bovenstaand, indien mogelijk uiteraard. Hier kom ik dus niet uit hoe ik dit zou moeten gaan realiseren en hoop dat ik hiermee geholpen kan worden.
 
Wat ik al zei, maak van het hele project een invoegtoepassing.
Dan hoef je alleen maar het .xlam bestand te vervangen en werkt iedereen met de aangepaste versie.
Desnoods doe je dat alleen voor het Workbook_open gedeelte.
 
@Edmoor,

Dank voor uw reactie. Helaas snap ik even niet precies wat u bedoeld en hoe ik dit zou moeten realiseren. Ik ga me in ieder geval hierin even verdiepen en op internet kijken of ik kan vinden hoe ik dit kan gaan creëren.
 
Dat kan uiteraard.
Anders wil ik wel een simpel voorbeeldje voor je maken.
 
Graag, dat begrijp ik vaak sneller als dat ik het op internet moet zoeken...
 
Bij deze.
Pak het zip bestand uit in een door jezelf te kiezen map.
Open Excel en vervolgens:
Klik op Bestand, Opties, Invoegtoepassingen.
Dan in het nieuwe scherm:
Start en vervolgens Bladeren.
Blader naar de map waar je de .xlam bestanden hebt geplaatst en dubbelklik op het bestand vaneijk.xlam
Klik op Ok.
Je zal een bericht zien, maar sluit eerst Excel af.
Start nu Excel weer en volg de instructies.
Deze worden getoond in een label object van een userform.

Bekijk bijlage vaneijk_addin.zip


In het VBA project zal je de invoegtoepassing (.xlam) ook zien.
Deze kan je van daaruit ook aanpassen en ook een wachtwoord op zetten.
Dit werkt ook in .xlsx documenten.
 
Laatst bewerkt:
Hartelijk dank voor uw gedane moeite Edmoor, ik ga even naar kijken en hier weer verder mee stoeien.
 
@Edmoor,

Ik heb er even naar gekeken en denk te snappen wat u bedoeld, dit lost vele problemen voor mij op en maakt het geheel nog veel makkelijker. Uiteraard moet ik vele aanpassingen maken mja, dat is niet anders natuurlijk. Voor het beeld op de toekomst is dit de ideale oplossing. Hartelijk dank voor uw gedane moeite.

mvg,
 
Graag gedaan.
En mocht je nog vragen hebben, Helpmij is the place to be :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan