Opgelost Gegevens overzetten van een excel-file naar een excel-file

Dit topic is als opgelost gemarkeerd
ja heb het getest en werkt, nu macro afmaken

even een ander vraagje: :)
kun je ook de macro of gedeelte daarvan overzetten in een ander file?
b.v. met een update v/d macro?
 
Ja, dat kan. Maar handig is anders vind ik.
AI zegt er dit over:

Het automatisch bewerken van VBA-macro's met behulp van een andere macro (ook wel VBA-code wijzigen via code, ofwel 'metaprogrammering') is mogelijk via de VBProject eigenschap. Met specifieke code kun je modules uitlezen, tekst aanpassen, toevoegen of verwijderen.

Toegang verlenen tot het VBA-project
Voordat je met VBA code in VBA-code kunt zoeken of deze kunt manipuleren, moet Excel dit toestaan. Dit is een strenge veiligheidsmaatregel:
  1. Ga in Excel naar Bestand > Opties > Vertrouwenscentrum.
  2. Klik op Instellingen voor het Vertrouwenscentrum.
  3. Ga naar Macro-instellingen en vink de optie Toegang tot het objectmodel van VBA-projecten vertrouwen aan.
Typische acties via VBA-code
Om code in een module (bijvoorbeeld Module1) te bewerken, kun je gebruikmaken van de VBComponents bibliotheek. Hieronder staan de specifieke codeblokken voor de meest uitgevoerde acties:

Zie ook de website van snb:
 
Laatst bewerkt:
En zo denkt Claude erover.

In VBA kun je via code een module kopiëren naar een ander werkboek. Je hebt daar de VBA Extensibility Library voor nodig.
Eerst inschakelen:
Excel → Extra → Verwijzingen → vink aan: Microsoft Visual Basic for Applications Extensibility 5.3
Code:
Sub KopieerModuleNaarAnderFile()

    Dim wbBron   As Workbook
    Dim wbDoel   As Workbook
    Dim modulNaam As String
    Dim exportPad As String
    Dim comp      As VBIDE.VBComponent

    ' === Aanpassen ===
    modulNaam = "Module1"           ' Naam van de module die je wilt kopiëren
    exportPad = "C:\Temp\temp_module.bas"  ' Tijdelijk exportpad

    Set wbBron = ThisWorkbook       ' Werkboek MET de nieuwe macro
    Set wbDoel = Workbooks("DoelFile.xlsm")  ' Werkboek dat geüpdatet moet worden

    ' --- Stap 1: Exporteer module uit bronbestand ---
    On Error GoTo FoutAfhandeling
    wbBron.VBProject.VBComponents(modulNaam).Export exportPad

    ' --- Stap 2: Verwijder oude module in doelbestand (als die bestaat) ---
    On Error Resume Next
    Set comp = wbDoel.VBProject.VBComponents(modulNaam)
    If Not comp Is Nothing Then
        wbDoel.VBProject.VBComponents.Remove comp
    End If
    On Error GoTo FoutAfhandeling

    ' --- Stap 3: Importeer module in doelbestand ---
    wbDoel.VBProject.VBComponents.Import exportPad

    ' --- Stap 4: Tijdelijk bestand opruimen ---
    Kill exportPad

    MsgBox "Module '" & modulNaam & "' succesvol overgezet naar " & wbDoel.Name, vbInformation
    Exit Sub

FoutAfhandeling:
    MsgBox "Fout " & Err.Number & ": " & Err.Description, vbCritical

End Sub

Drie scenario's mogelijk:
ScenarioWat aanpassen
Doel-file is al openWorkbooks("DoelFile.xlsm") — gewoon de naam
Doel-file moet nog geopend wordenSet wbDoel = Workbooks.Open("C:\pad\DoelFile.xlsm")
Meerdere modules tegelijkLoop over een Array("Module1", "Module2", ...)

Belangrijk: het doel-bestand moet een .xlsm zijn (macro-enabled), anders kan hij geen modules bevatten.

Nu maar eens afwachten waar @snb mee op de proppen komt.
 
lolz, ja die reageert geheid nog :)


ok thanks Peter, maar e.e.a. houd in dat je dat niet van een andere pc even kan doen of wel?
 
Dat kan alleen op de PC waar het te bewerken document staat.
Uiteraard kan je ook via Remote Desktop werken.
In een bedrijfsomgeving is de kans erg groot dat de benodigde beveiliging instelling niet ingeschakeld mag worden.
 
Hier heeft Claude ook weer een antwoord op. Maar of het allemaal klopt??

Het probleem: Trust Center
Excel blokkeert standaard toegang tot het VBA-project via code. Dit moet op elke pc apart worden ingesteld:
Excel → Bestand → Opties → Vertrouwenscentrum → Instellingen Vertrouwenscentrum → Macro-instellingen → vink aan:
"Toegang tot het VBA-projectobjectmodel vertrouwen"
Zonder die vinkje krijg je de fout:

Programmatische toegang tot Visual Basic Project is niet vertrouwd
Alternatieven die wél vanaf een andere pc werken:
Optie A : Gewoon de .bas file meesturen

Code:
Geen code nodig!
- Exporteer de module handmatig (VBA Editor → rechtermuisklik → Exporteren)
- Stuur het .bas bestandje op
- Ontvanger importeert het zelf (rechtermuisklik → Importeren)

Optie B : Persoonlijke Werkmap (Personal.xlsb)
Macro's die je in Personal.xlsb zet zijn beschikbaar in alle Excel-bestanden op die pc.
Optie C : Add-in (.xlam)
- Macro's in een .xlam bestand zetten
- Eenmalig installeren via Excel → Invoegtoepassingen
- Daarna beschikbaar op die pc in elk werkboek
Samengevat :

MethodeAndere pcInstelling nodig
VBA Extensibility (code)⚠️ Alleen met Trust Center aanJa, per pc
.bas exporteren/importeren✅ AltijdNee
Personal.xlsb✅ Per pc installerenNee
Add-in .xlam✅ Makkelijkst te delenNee

Claude schrijft ook nog :
Voor jouw situatie zou ik Optie A aanraden het simpelst en werkt altijd.
 
Uiteraard is er ook een instelling nodig om VBA te mogen uitvoeren:

1782138807109.webp
 
"Toegang tot het VBA-projectobjectmodel vertrouwen"
Zonder die vinkje krijg je de fout:

Programmatische toegang tot Visual Basic Project is niet vertrouwd
Dat schreef Claude ook.
 
Terug
Bovenaan Onderaan